我在MacOS上使用PowerShell 6.2。我正在尝试在目标数据库上运行* .sql文件,但似乎找不到合适的模块。
我的目标是将生产数据库复制到沙箱副本中-然后清除登录名/权限并设置一个新名称。我正在使用:
New-AzSqlDatabaseCopy -ResourceGroupName "ProdRG" -ServerName "ProdSrv" -DatabaseName "ProdDB" -CopyResourceGroupName "SandRG" -CopyServerName "SandServ" -CopyDatabaseName "SandDB"
如何在新实例上执行SQL脚本?
答案 0 :(得分:1)
对于您的本地实例
您可以使用以下方法将SQL模块sqlps导入到当前上下文中:
Import-Module "sqlps" -DisableNameChecking
-DisableNameChecking
参数将忽略在没有PowerShell从库推荐的“批准的”名词-动词命名方案的情况下导入模块时可能会收到的警告。
然后您可以运行:
Invoke-Sqlcmd -ServerInstance ServerName -inputFile "yoursqlfile.sql" -Database "your database"
要针对该特定数据库运行sql脚本。
参考: https://docs.microsoft.com/en-us/powershell/module/sqlserver/invoke-sqlcmd?view=sqlserver-ps
对于Azure Powershell中的Azure实例:
您可以运行以下命令(在下面的SO答案中找到):
$connectionString = "Data Source=MyDataSource;Initial Catalog=MyDB;User ID=user1;Password=pass1;Connection Timeout=90"
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection($connectionString)
$query = [IO.File]::ReadAllText("C:\...\TestSQL.sql")
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand($query, $connection)
$connection.Open()
$command.ExecuteNonQuery()
$connection.Close()