mschaedler1982
Goto Top

Powershell + SQL Statement

Hallo zusammen,

Ich sitze hier gerade vor einem Problem, wo ich nicht so recht weiterkomme und im Internet habe ich bisher auch noch nichts gefunden.

Ich habe einen SQL Server 2017 installiert, der unter Windows Server 2012R2 läuft.
SQL Server Management Studio v17.9.1 + PowerShell 5.0,

Auf meinem Rechner ist Windows 10 und ebenfalls PowerShell 5.0 + SQL Studio Management v17.9.1 vorhanden.

Über das Kommando,

invoke-sqlcmd -ServerInstance HOSTNAME -Debug -Database WHATEVER -InputFile "C:\Temp\test.sql" -Verbose 4> "C:\Temp\reply.txt"  

komme ich am Server zu meinem Ergebnis. "Targetstate = 110"

Wenn ich das gleiche Kommando an meinem Windows 10 Rechner abschicke. Erhalte ich diese Fehlermeldung.

Invoke-Sqlcmd : Die Datei oder Assembly "Microsoft.SqlServer.BatchParser, Version=15.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene   
Datei nicht finden.
In Zeile:1 Zeichen:1
+ Invoke-Sqlcmd -ServerInstance HOSTNAME -Debug -Database WHATEVER -I ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Invoke-Sqlcmd], FileNotFoundException
    + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand


Install-Module SQLServer habe ich an meinem Windows 10 Rechner bereits durchgeführt.

Ein invoke-command -Computername HOSTNAME {invoke-sqlcmd -ServerInstance HOSTNAME -Debug -Database WHATEVER -InputFile "C:\Temp\test.sql" -Verbose 4> "C:\Temp\reply.txt"}
erzeugt mir auf dem Server die reply.txt Sicherlich könnte ich mir über einen weiteren Befehl den Inhalt der Text Datei anzeigen lassen bzw. in eine Variable schreiben lassen, aber der Fehler sollte verschwinden.

Hat jemand für die obenstehende Fehlermeldung eine Lösung oder einen Hinweis?

Da wäre ich sehr dankbar!

Gruss

Michael

Content-ID: 454418

Url: https://administrator.de/contentid/454418

Ausgedruckt am: 25.11.2024 um 21:11 Uhr

139920
139920 22.05.2019 aktualisiert um 20:55:13 Uhr
Goto Top
Hört sich nach einer Powershell-Session mit anderer Bitness oder Komponenten in 32 start 64bit an
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4d682289-9e06-4 ...
Checke also die verwendete Konsolenbitness und das die Komponenten die gleiche Bitness wie der SQL Server haben.
mschaedler1982
mschaedler1982 23.05.2019 um 10:34:37 Uhr
Goto Top
Hab ich mal geprüft

Windows 10 x64
Name                           Value                                                                                                                                                                  
----                           -----                                                                                                                                                                  
PSVersion                      5.1.17763.316                                                                                                                                                          
PSEdition                      Desktop                                                                                                                                                                
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                
BuildVersion                   10.0.17763.316                                                                                                                                                         
CLRVersion                     4.0.30319.42000                                                                                                                                                        
WSManStackVersion              3.0                                                                                                                                                                    
PSRemotingProtocolVersion      2.3                                                                                                                                                                    
SerializationVersion           1.1.0.1   

PS C:\WINDOWS\system32> [Environment]::Is64BitProcess
False

Windows Server 2012R2 x64 ; SQL Server 2017 x64

Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
PSVersion                      5.1.14409.1005                                                                                                                                                 
PSEdition                      Desktop                                                                                                                                                        
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                        
BuildVersion                   10.0.14409.1005                                                                                                                                                
CLRVersion                     4.0.30319.42000                                                                                                                                                
WSManStackVersion              3.0                                                                                                                                                            
PSRemotingProtocolVersion      2.3                                                                                                                                                            
SerializationVersion           1.1.0.1   

PS C:\Windows\system32> [Environment]::Is64BitProcess
False

Aufm Server geht es nur in der 64 Bit PowerShell, auf dem Windows Rechner gar nicht. (außer invoke-command)

invoke-sqlcmd -ServerInstance HOSTNAME -Debug -Database WHATEVER -InputFile "C:\Temp\test.sql" -Verbose 4> "C:\Temp\reply.txt"  

Weiß jemand wo man das runterladen kann? -> 64bit Microsoft SQL Server 2017 Shared Management Objects
139920
139920 23.05.2019 aktualisiert um 11:03:14 Uhr
Goto Top
PS C:\WINDOWS\system32> [Environment]::Is64BitProcess
False
Hier hast du dein Problem, du hast die 32Bit Variante der Powershell-Konsole am Client als auch am Server gestartet! Starte die native Powershell, die ist dann auch in 64 Bit dann klappt das auch!!!
mschaedler1982
mschaedler1982 23.05.2019 um 13:32:43 Uhr
Goto Top
Die Lösung ist …

install-Module SQLServer -AllowCrobber

man muss die Module für beide x86 / x64 PowerShell Varianten installieren.
139920
Lösung 139920 23.05.2019 aktualisiert um 14:14:28 Uhr
Goto Top
Zitat von @mschaedler1982:

Die Lösung ist …

install-Module SQLServer -AllowCrobber
Du meinst -AllowClobber.

man muss die Module für beide x86 / x64 PowerShell Varianten installieren.
Nö, nur die entsprechende Powershell starten für die man die Tools auch installiert hat face-smile.