Câu hỏi này đã ở đây một lúc và bạn có thể đã tìm thấy câu trả lời cho mình ngay bây giờ, nhưng đối với những người đang tìm kiếm một cách đơn giản để thực hiện việc này, các phiên bản hiện tại của mô-đun Powershell máy chủ SQL có các lệnh và phương thức gốc hỗ trợ chức năng này từ SMO.
Bạn có thể sử dụng Get-SqlDatabase và các phương thức như .Script () và .EnumScript ().
Ví dụ:điều này sẽ tạo tập lệnh CREATE cho các chức năng do người dùng xác định và lưu nó vào tệp:
$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName
$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"
Nếu bạn muốn tập lệnh dữ liệu và các phần tử như chỉ mục, khóa, trình kích hoạt, v.v. bạn sẽ phải chỉ định các tùy chọn tập lệnh, như sau:
$scriptOptions = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions
$scriptOptions.NoCollation = $True
$scriptOptions.Indexes = $True
$scriptOptions.Triggers = $True
$scriptOptions.DriAll = $True
$scriptOptions.ScriptData = $True
$Database.Tables.EnumScript($scriptOptions) | Out-File -FilePath ".\AllMyTables.sql"
Lưu ý rằng phương thức Script () không hỗ trợ dữ liệu tập lệnh. Sử dụng EnumScript () cho các bảng.
Nếu bạn chỉ muốn tập lệnh cho dữ liệu, như được yêu cầu, bạn có thể thử $scriptOptions.ScriptData = $True
và $scriptOptions.ScriptSchema = $False
.