2016-03-27 22 views
0

I powershell komut dosyasını çalıştırdığımda Invoke-SqlCmd : Login failed for user 'DIR\MISAccount'. alıyorum. Powershell betiği .sql dosyasında tanımlanan .sql dosyasını ve çalıştırılan deyimi okuyacaktır. Yerel makinemdeki powershell ve .sql komut dosyasını test ettim (aynı kutuda app ve db) ve betikler beklendiği gibi çalışıyor.Invoke-Sqlcmd hatası: Uzak DB sunucusunu çağırmak için powershell çalıştırırken kullanıcı xxxx için oturum başarısız oldu

Şimdi, sunucudaki komut dosyalarını çalıştırırken hata alıyorum, buradaki fark, uzaktaki db sunucusunu çağırmak için gereken güç kaynağıdır. DB sunucu üzerinde çalıştı Çalıştır powershell komut - - Uygulama sunucudan Bağlan CMD SQLCMD aracılığıyla Çalıştığınız - Ben Uygulama sunucudan SSMO aracılığıyla

bağlayın aşağıda kontrol ettim Yukarıdaki testte dayanarak

çalıştı, inanıyorum Sorun, uzak DB sunucusuna Powershell (uygulama sunucusunda çalışan) kimlik bilgisidir, ancak bunu çözmek için hiçbir ipucu yok. Herhangi bir yardım çok takdir edecekti. İşte

Powershell komut aşağıda yöntemle çözüldü

$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss" 
$SqlFile = "E:\User\Script_CreateTable.sql" 
$OutputFile = "E:\User\CreateTable.log" 
$Path = "E:\User\Password.txt" 
$uid = 'sa' 
$ConnectionString = "Server=WINPRD212\PROD_INC;Database=AccountMEC;" 

$pwd = Get-Content $Path | ConvertTo-SecureString 
$pwd.MakeReadOnly() 


$creds = New-Object System.Data.SqlClient.SqlCredential($uid,$pwd) 

$con = New-Object System.Data.SqlClient.SqlConnection 
$con.ConnectionString = $ConnectionString 
$con.Credential = $creds 
$con.Open() 


Invoke-SqlCmd -InputFile $SqlFile -verbose 

$con.Close() 

cevap

0

Sorun:

$ creds = Yeni-Nesne System.Management.Automation.PSCredential $ uid $, pwd $ Şifre = $ creds. GetNetworkCredential(). Şifre

çağır-sqlCmd -InputFile $ SQLFile -Username 'sa' -Şifre $ Şifre -ServerInstance 'WINPRD212 \ PROD_INC' -Veritabanı 'AccountMEC'

İlgili konular