2017-04-04 5 views
0

DacStoreのコードをアップグレードしてSQL Server 2016で動作させ、DacServicesの問題に対処します。ここでの目標は、スキーマを更新する前に、既存のデータベースのデータ層の登録を解除することです。DacServicesを使用してデータ層を登録解除する際のエラー

コードスニペット:作成DacServicesオブジェクトとき

$serverconnection = New-Object System.Data.SqlClient.SqlConnection 
If (!$uid -And !$pwd){ 
    $serverconnection.ConnectionString = "Server = $server; Database = $database; Integrated Security = True;" 
} 
Else{ 
    $serverconnection.ConnectionString = "server = $server; Database = $database; Integrated Security = False; User ID = $uid; Password = $pwd;" 
} 

# Load the DAC assembly 
$validate = Test-Path $dacfxPath 
if (!$dacfxPath){ 
    throw 'No usable version of Dac Fx found.' 
} 
Add-Type -Path $dacfxPath # Attempt to load DAC assembly 

$DacService = New-Object Microsoft.SqlServer.Dac.DacServices($serverconnection) 
$dacName = $database 

## Only delete the DAC definition from msdb, the associated database remains active. 
$DacService.Unregister($dacName) 

エラーを受信:

New-Object : Exception calling ".ctor" with "1" argument(s): "Format of the initialization string does not conform to 
specification starting at index 0." 
At C:\Users\Administrator\AppData\Local\Temp\2\_ir_sf_temp_0\UnregisterDataTier.ps1:34 char:15 
+ ... acService = New-Object Microsoft.SqlServer.Dac.DacServices($servercon ... 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [New-Object], MethodInvocationException 
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand 

私の接続文字列が正しい表示され、過去に働いていました。私は間違って何をすることができますか?

答えて

0

更新:DacServicesコンストラクタargに、接続文字列であることを指定して問題を修正したようです。

$DacService = New-Object Microsoft.SqlServer.Dac.DacServices($serverconnection.Connec‌​tionString) 

今すぐUnregister()メソッドに問題はありますが、一歩近づいています!

関連する問題