在powershell脚本中执行sql命令
问题描述:
我想通过直接输入来执行简单的sql命令,但是我想使用Powershell脚本来做到这一点,不想使用powershell API执行命令,而只是通过调用命令在powershell脚本中执行sql命令
sqlcmd -S .\SQLEXPRESS -U SA -P mypass
USE [master]
RESTORE DATABASE [easypay] FROM DISK = N'C:\backup.trn' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5
ALTER LOGIN [itdb] WITH PASSWORD=N'abc'
GO
USE [easypay]
GO
EXEC sp_change_users_login 'Auto_Fix', 'itdb'
Go
USE [easypay]
GO
sp_changedbowner 'sa'
GO
UPDATE itdb.passwd set password = '1a1dc91c907325c69271ddf0c944bc72' WHERE itdb.passwd.name = 'abc'
GO
我想要一个PowerShell脚本能够照片直接执行这些命令 感谢
答
下面是修改一个脚本,我用的,有点。 注意此代码是未经测试:
做由基里尔帕什科夫
$SQLServer = "" #your value
$SQLDBName = "" #your value
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
#Start SQL connection
$SqlCmd.Connection = $SqlConnection
#Create querys
#Query 1
$SqlQuery = "Command;"
#Query 2
$SqlQuery2 = @"
Command
"@
#Add querys to array
$querys = $SqlQuery, $SqlQuery2
# Run Query
Foreach($query in $querys)
{
$SqlCmd.CommandText = $query
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$OutPut = $SqlAdapter.Fill($DataSet)
if($OutPut -ne 0){
Write-Host $OutPut
}
}
#Close SQL connection
$SqlConnection.Close()
因为“GO”这个代码将无法正常工作的意见之后的一些变化是一个实用的命令,以分批(如SQLCMD或者SSMS和等)。你会想在几个查询语句中拆分命令。 –