0

こんにちは、windows7 Ultimate マシンで mdf ファイル (sqlserver データベース ファイル) のバックアップを作成するための powershell スクリプトを作成しようとしています。

しかし、スクリプトを実行するとエラーが表示されます:

New-Object : Cannot find type [Microsoft.SqlServer.Management.Smo.Backup]: make sure the assembly
is loaded.
At C:\Users\abc\tmp.ps1:5 char:23
+ $dbBackup = new-object <<<<  ("Microsoft.SqlServer.Management.Smo.Backup")
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

Property 'Database' cannot be found on this object; make sure it exists and is settable.
At C:\Users\abc\tmp.ps1:8 char:11
+ $dbBackup. <<<< Database = "ds"
    + CategoryInfo          : InvalidOperation: (Database:String) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

You cannot call a method on a null-valued expression.
At C:\Users\abc\tmp.ps1:11 char:28
+ $dbBackup.Devices.AddDevice <<<< ("D:\backups\BLACKSWASTIK.bak", "File")
    + CategoryInfo          : InvalidOperation: (AddDevice:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Property 'Action' cannot be found on this object; make sure it exists and is settable.
At C:\Users\abc\tmp.ps1:14 char:11
+ $dbBackup. <<<< Action="Database"
    + CategoryInfo          : InvalidOperation: (Action:String) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

You cannot call a method on a null-valued expression.
At C:\Users\abc\tmp.ps1:17 char:20
+ $dbBackup.SqlBackup <<<< ($s)
    + CategoryInfo          : InvalidOperation: (SqlBackup:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

ここに私のコードがあります:

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "localhost\sqlexpress2008"


$dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup")

#Set the Database property to Northwind 
$dbBackup.Database = "bs"

#Add the backup file to the Devices collection and specify File as the backup type 
$dbBackup.Devices.AddDevice("D:\backups\BLACKSWASTIK.bak", "File")

#Specify the Action property to generate a FULL backup 
$dbBackup.Action="Database"

#Call the SqlBackup method to generate the backup 
$dbBackup.SqlBackup($s)

このコードは XP マシンでは正常に動作しますが、windows7 Ultimate マシンで実行したいのですが、何か変更が必要ですか? 提案してください....

4

2 に答える 2

0

@Brandonは正しい考えを持っていますが、最新の情報ではありません。sqlpsユーティリティでこのMSDNページを確認すると、2番目の段落に「この機能はMicrosoftSQLServerの将来のバージョンで削除される」と記載されて非推奨になっていることがわかります。これは、SQL Server 2012の時点で実際に当てはまります。SQLServer2012には、sqlpsモジュールが組み込まれています(sqlpsユーティリティとは異なります)。Brandonが提案したように、独自のsqlpsモジュールを作成することはできますが、この記事の最後にダウンロード可能なバージョンがあるため、作成する必要はありません。「sqlps」対「sqlps」対「sqlps」の完全にねじれた、曖昧な、そして恐ろしい物語のためにパート1およびパート2、これらはSimple-Talk.comで公開されたばかりです。また、両方の記事から知っておく必要のあるすべてのものを1枚のシートにまとめた私のウォールチャートへのリンクもあります。

于 2012-08-23T23:22:46.963 に答える
0

SQL Server Powershell の実行については、MSDN のこの記事を参照してください。これにより、必要なすべてのアセンブリと名前空間をロードして実行できる便利なスクリプトだけでなく、前提条件も提供されます。次に、それをスクリプトに DotSource して、SMO にアクセスできるようにします。

私の環境では、このスクリプトを使用して少し調整し、PowerShell モジュールを作成して、コードをスクリプトに簡単に取り込めるようにしました。

于 2012-08-23T13:33:40.737 に答える