2017-04-21 22 views
0

私は直接入力してコマンドを実行する単純な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 

私はここでdireclty おかげ

答えて

0

をこれらのコマンドを実行することができますPowerShellのスクリプトは、私が使用するスクリプト、少し変更です。欲しいです 注このコードはテストされていない:

はキリルPashkov

$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」ので、このコードは動作しません
+0

からのコメントの後、いくつかの変更を加えて、このようなSQLCMDまたはSSMSとなどとして別々のバッチ(にユーティリティコマンドです)。いくつかのクエリ文でコマンドを分割したいと思うでしょう。 –