問題タブ [smo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4580 参照

c# - sqlexpress が SQLSERVER2008 がインストールされているマシンと同じマシンにある場合、SmoApplication.EnumAvailableSqlServers() はデフォルトのインスタンスをリストしません。

私は SMO を使用してネットワークの利用可能な sqlservers を見つけています。しかし、私が実行している 1 台のマシンで

アプリケーションはデフォルトのインスタンス名を与えませんが、他のすべてのマシンには与えます

名前付きおよびデフォルトのインスタンスが表示されます。

私のシナリオを観察してください。

例: マシン名:rkwrk3-vm-sr (アプリを実行しているローカル マシン

sqlserver2008 がインストールされている)

これには、実際には、デフォルトのインスタンスとして sql2008 があり、名前付きインスタンスとして sqlexpress(2005) があります...

ただし、rkwrk3-vm-sr\sqlexpress のインスタンスは 1 つしか表示されず、rkwrk3-vm-sr は表示されません。

および他のいくつかのマシン Hr-2k3-tm (sqlserver2005 がインストールされている場所)

このため、Hr-2k3-tm と Hr-2k3-tm/sqlexpress が表示されます

これを修正するにはどうすればよいですか。

前もって感謝します。

0 投票する
1 に答える
7444 参照

c# - SMO を使用して Sqlserver2008 に接続する方法はありますか?

ローカルマシンでSQLサーバーインスタンスを見つけるためにこれを書きました:

ローカル マシンに 3 つのインスタンスがあります

  1. rk2k3-vm-sr (sql2008 インスタンス)
  2. rk2k3-vm-sr\sql2k8express (sql2k8 インスタンス)
  3. rk2k3-vm-sr\sqlexpress (sql2k5 インスタンス)

しかし、2 と 3 しか表示されていません。1 は表示されません。また、サーバー オブジェクトを使用して接続すると、sql2k8express で失敗します。

これが出力です....


-->インスタンス RK2K3-VM-SR\SQLEXPRESS
マスター
モデル
msdb
tempdb


-->インスタンス RK2K3-VM-SR\SQL2K8EXPRESS

Microsoft.SqlServer.Management.Common.ConnectionFailureException: サーバー RK2K3-VM-SR\SQL2K8EXPRESS への接続に失敗しました。---> Microsoft.SqlServer.Management.Com mon.ConnectionFailureException: この SQL Server バージョン (10.0) はサポートされていません。Microsoft.SqlServer.Management.Common.ConnectionManager.CheckServerVersion (ServerVersion バージョン) で Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect (Wi ndowsIdentity impersonatedIdentity) で Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() ---内部例外スタック トレースの終了 --- Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() で Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() で Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion( ) マイクロソフトで。

どうすればこれを修正できますか? 私のシステムのファイアウォールは無効になっており、すべての SQL サービスが実行されています。

0 投票する
2 に答える
431 参照

sql-server-2005 - データベースを SQL-Server 2005 から SQL-Server 2008 に転送する

SMO「転送」を介してソース サーバーからターゲット サーバーにデータベースを転送する既存のアプリケーションがあります。データのみを転送します。

両方の SQL サーバーは 2005 年です。

ここで、ターゲット サーバーを SQL-Server 2008 にアップグレードします。SMO による転送は引き続き機能しますか?

0 投票する
1 に答える
1961 参照

c# - 全員が権限を持つ SMO を使用してデータベースを作成する方法は?

次のように SMO を使用して SQL Server Express データベースを作成しようとしています。

データベースを問題なく使用できます。しかし、誰かがデータベースをコピーしようとすると、ファイル許可エラーが発生します。Windows エクスプローラーの [セキュリティ] タブの下を見ると、アクセス許可を持っているのは私だけです。単純にファイルのコピーを作成すると、コピーによってすべてのユーザーにアクセス許可が付与されます。

では、Create() で全員に許可を与えるにはどうすればよいでしょうか? 作成されたファイルはディレクトリのアクセス許可を継承すると思いますが、明らかにそうではありません。ファイルのアクセス許可を自分で設定できることはわかっていますが、Create() が特別なアクセス許可を与えている理由を理解しようとしています。

0 投票する
1 に答える
753 参照

sql-server - SMOの代替手段、つまりSQLServerのDMLAPI?

SQLまたはアプリケーションサーバーへの完全なSMOインストールがないと、ASP.NETでSMOを使用できないことを学びました。許可されていないので、SMOは使えません。

他のどのライブラリがSMOと同じことをしますが、MSIインストーラーまたはCOM登録を必要としませんか?

ADO.NETコマンド内でサーバーにDDLを送信できることはわかっていますが、SMOを使用して回避しようとしていたのはまさにそれです。

SMOの良さ:

一貫性のないCOBOLのようなDDLに依存しなかったメタデータ(列、データ型)をクエリするためのオブジェクト指向API。

文書化されていないストアドプロシージャ、システムストアドプロシージャ、またはいくつかのバージョンごとに破損するテーブルをクエリする必要はありませんでした。

頭から離れてADOXとDMOについて考えることができますが、どちらもCOMベースのAPIでした。

0 投票する
3 に答える
2383 参照

sql-server - 孤立したユーザーを SQL SMO で修正しますか?

SQL SMO を使用して SQL 2005/2008 データベースで孤立したユーザーを修正する方法はありますか?

User.Loginユーザーを列挙して空のプロパティを探すことで、孤立したユーザーを比較的簡単に見つけることができます。

残念ながら、この修正はUser.Login、一致するサーバー ログイン名にプロパティを設定するほど簡単ではありません。User.Loginセッターはありますが、それをサーバーに伝達する方法を知りません。新しい を作成する場合にのみ使用できるようですUser

データベースからユーザーを削除し、サーバー ログインをデータベースに再バインドすることを検討しましたが、これにはさらに複雑な問題が伴います。デフォルトのスキーマ、ロールの再割り当てなどの複雑さ、およびそれらがデータベース内のスキーマを所有している場合、それらの変更をカスケードするにつれて、より多くの問題が発生します。SQL をインライン化し、それを完了させたいと思うようにするだけで十分です。

ただし、システム ストアド プロシージャへの呼び出しをインライン化しないことをお勧めします。

助言がありますか?

0 投票する
1 に答える
2347 参照

c# - SMO を使用して SQL Server 2008 登録済みサーバーを列挙できない

ワークステーションに SQL Server 2005 Management Studio をインストールしました。その後、SQL Server 2008 ワークステーション ツールをインストールし、SQL Server 2005 ツールを削除しました。現在、管理スタジオで登録済みのサーバーを反復処理する ac# プログラムを作成しています。問題は、2008 の登録済みサーバー リストではなく、2005 ツールの古いリスト (現在はアンインストールされています) を反復処理していることです。

アセンブリ参照の問題かもしれないと思ったので、SMO アセンブリ参照が新しいツールを指していることを確認しました。私は使っている:

  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Management.Sdk.Sfc
  • Microsoft.SqlServer.Smo
  • Microsoft.SqlServer.SqlEnum

アセンブリが 10.0 バージョンであることを確認しました。

仕事をする私のC#コードスニペットは次のとおりです。

これを修正する方法についてのアイデアはありますか? 間違った SMO コードを使用しているだけですか?

乾杯、マーク。

0 投票する
2 に答える
12526 参照

sql-server - KillAllProcessesの実行時に、サーバーで失敗したすべてのアクティブなデータベース接続を削除する

アプリケーションからデータベースの復元を実行する必要があります。これを行う前に、次のようにすべてのプロセスを強制終了します。

ただし、最初のKillAllProcessesを実行すると、次の例外が発生します。

Microsoft.SqlServer.Management.Smo.FailedOperationException:サーバー'MYServer'のアクティブなデータベース接続をすべて削除できませんでした。---> Microsoft.SqlServer.Management.Common.ExecutionFailureException:Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。---> System.Data.SqlClient.SqlException:ユーザープロセスのみを強制終了できます。

サーバーの作成に使用される接続文字列には資格がありますが、終了する必要のあるプロセスは別のユーザーで開始されます。同様のシナリオをテストしたところ、テストは成功しました。

これはごく最近になって起こり始めました。私には、ユーザーによって開始されていないいくつかのプロセスが実行されているように見えますか?

0 投票する
3 に答える
31087 参照

c# - C#からデータベースを復元する方法

SQL2008DBがあります。そのDBをバックアップするフォームを実行してから、それを更新しようとしています。更新が失敗した場合は、そのバックアップを復元することをお勧めします。これが私がバックアップを復元するために使用しているコードです。

問題は、私が選んだファイル名がオンラインDBと異なることのようです。基本的に、サーバー上のデータベースをバックアップに置き換えたいと思います。SqlRestoreを呼び出すと例外が発生します。

主な例外は言う

{"サーバー'localhost'の復元に失敗しました。"}

内部の例外を掘り下げると、これらのエラーが表示されます

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。

その後

論理ファイル「DB」はデータベース「DB」の一部ではありません。RESTORE FILELISTONLYを使用して、論理ファイル名を一覧表示します。\ r \nRESTOREDATABASEが異常終了しています。

既存のDBをそのまま使用するように指示する方法があると思います。

このコードを使用して、バックアップをダンプするディレクトリを持つDBのファイルパスを取得します。たぶん、これを使用してファイル名を再作成することができます。

0 投票する
2 に答える
3164 参照

c# - c#およびSMO-ロギング用に「テーブルはすでに存在します」などのメッセージ出力を取得します

SQL管理オブジェクトを使用してSQLサーバーに接続しています。現時点では、私の例では単純な「テーブルの作成」コマンドが含まれています。

このコードを意図的に2回実行して、「テーブルは既に存在します」というエラーを発生させます。

ただし、以下のイベントはトリガーされません。

誰かがアイデアを思いついたのですが、コードでこのメッセージを保持する方法を教えてください。それ以外の場合は、ExecutionTypeを変更して、例外の原因となるエラーで停止します(これはやりたくない、続行したい)

私のコード:

イベント:-