2016-09-20 21 views
0

私はいくつかのコードをオンラインで見つけましたが、これまでのところSQL Serverデータベースに接続できませんでした。私は私が手にこれを実行するとPowerShellを使用してSQL Serverを照会する方法は?

$dataSource = “\\SCCM12-01\MSSQLSERVER” 
    $user = “MyID\OurDomain.org” 
    $pwd = “MyPassword” 
    $database = “CM1” 
    $connectionString = “Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;” 

    $connection = New-Object System.Data.SqlClient.SqlConnection 
    $connection.ConnectionString = $connectionString 
    $connection.Open() 

:私は、その後のPowerShell ISEから、このコードを実行し、私はリモート接続を許可しているhttps://blogs.msdn.microsoft.com/walzenbach/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008/

私のファイアウォールなどにポート1433を追加しました:私は手紙にこのウェブサイトを踏襲しています次のエラー。

Exception calling "Open" with "0" argument(s): "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 25 - Connection string is not valid)"

+0

は\\ずに試してみてください。 –

+0

いいえ、それはどちらもうまくいきません。 \\私はこのエラーを取得します: "0"引数で "開く"例外: "SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。 (プロバイダ:SQLネットワークインターフェイス、エラー:25 - 接続 文字列が有効ではない) " 行:13 char:1 + $ connection.Open() – mqh7

+1

これは通常問題ではありませんが、コード内に多くのスマートな引用符があります。 – Matt

答えて

-1

あなたはこれを試すことができます。

param([Int32]$param1=1, [Int32]$param2=2) 

$cn = new-object system.data.SqlClient.SqlConnection("Server=xxxxxxx.database.windows.net;Database=xxxxxx;User ID=xxxxxxxx;Password=xxxxxxxx;Trusted_Connection=False;Encrypt=True"); 

$qMergeScript = "dbo.SPName" 

$sqlcmdMerge = New-Object System.Data.SqlClient.SqlCommand($qMergeScript,$cn); 
$sqlcmdMerge.CommandType = "StoredProcedure"; 
$sqlcmdMerge.CommandTimeout = 0; 

$sqlcmdMerge.Parameters.Add("param1",[System.Data.SqlDbType]::Int) | Out-Null; 
$sqlcmdMerge.Parameters["param1"].Value = $param1; 
$sqlcmdMerge.Parameters.Add("param2",[System.Data.SqlDbType]::Int) | Out-Null; 
$sqlcmdMerge.Parameters["param2"].Value = $param2; 

try 
{ 
    $cn.Open() | Out-Null; 
    $sqlcmdMerge.ExecuteNonQuery() | Out-Null; 
} 
catch [Exception] 
{ 
    $cn.Close()| Out-Null; 
    Write-Host -ForegroundColor DarkRed "Error in Calling SP" 
    throw($_.Exception.Message); 
} 
finally 
{ 
$cn.Close() | Out-Null; 
} 
0

わからないが、なぜあなたはこのエラーを得ています。あなたはこのリンクhttps://github.com/Tervis-Tumbler/InvokeSQL

を参照することができますが、このワン

function Invoke-SQL { 
    param(
     [string] $dataSource = ".\SQLEXPRESS", 
     [string] $database = "MasterData", 
     [string] $sqlCommand = $(throw "Please specify a query.") 
    ) 

    $connectionString = "Data Source=$dataSource; " + 
      "Integrated Security=SSPI; " + 
      "Initial Catalog=$database" 

    $connection = new-object system.data.SqlClient.SQLConnection($connectionString) 
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection) 
    $connection.Open() 

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command 
    $dataset = New-Object System.Data.DataSet 
    $adapter.Fill($dataSet) | Out-Null 

    $connection.Close() 
    $dataSet.Tables 
} 
+0

あなたの例が統合されたWindowsのセキュリティに基づいているのに対し、OPはSql Server認証を使用しようとしています(これは賢明ですが、何が尋ねられているかは分かりません)。 – vonPryz

0

を試すことができ、エラーメッセージは、実際に何が間違って説明します

"SQL Network Interfaces, error: 25 - Connection string is not valid".

接続文字列に間違って何かがあります。あなたが細部の大部分を隠してしまったので、正確には何が言い難いのですか。たぶん賢明な引用符は物事を壊すでしょうか?多分あなたはパスワードに引用文字を持っていますか?とにかく、あなたはユーザーIDのinvalid parameterを持っているように見える:

$connectionString = “Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;” 

はそうUser Idの代わりuidなどを試してみてください、

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword; 
関連する問題