問題タブ [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.
sql-server - SMO を使用して実行中の SqlAgent ジョブの SPID を見つける方法
Server.JobServer.jobs を使用してジョブのリストを取得する SMO オブジェクトを使用すると、各ジョブのステータスを確認できます。現在実行中のものについては、実行中の SPID を見つけたいと思います。Server.EnumProcesses() を使用して、サーバーのプロセスのリストを取得することもできます。これにより、現在アクティブな SPID のリストが表示されます。2つ合わせたい。
私が思いついた最善の方法は、jobid を文字列に変換し、EnumProcesses テーブルのプログラム文字列から jobId をサブストリング化することです (少なくとも私のシステムでは、この説明に jobId が埋め込まれています)。プログラム記述の Guid と jobID の GUID で、文字列表現の最初の 3 つの部分でバイトが入れ替わっているといういくつかの理由で、これは本当に醜いです。うん。
SMO を使用してそれを行うより良い方法はありますか?
c# - 既存のデータベースの SQL Server 管理オブジェクトのトラバーサルを高速化する方法はありますか?
現在、SMO と C# を使用してデータベースを走査し、2 つのデータベースのさまざまな側面を表す設定のツリーを作成してから、これらのツリーを比較して、それらがどこでどのように異なるかを確認しています。
問題は、2 つの適度なサイズのデータベースの場合、それらをローカルでクロールし、比較したいテーブル/列/ストアド プロシージャの情報を収集するのに約 10 分かかることです。
このような方法でデータベースにアクセスするための SMO よりも優れたインターフェイスはありますか? 追加の依存関係を含めたくありませんが、50% の速度向上のためにその手間を惜しみません。以下は、テーブルと列を列挙する方法のサンプルです。
c# - SMO スクリプト オブジェクトとセキュリティ
ホストされたサーバー上に SQL データベースを持っている顧客がいます。データベースを「myDatabase」と呼びます。
ホスティング会社。オブジェクト エクスプローラーがロックされました - リストされたデータベースに myDatabase が表示されません (tempdb と master が表示されます)。ただし、「myDatabase を使用」してから「myTable から * を選択」すると、すべて正常に動作します。
オブジェクト エクスプローラーにアクセスできないため、右クリックしてスクリプトを生成することはできません。SMO を使用して目的を達成できるのではないかと考えましたが、次のようなことを試みると、次のようになります。
失敗します-myDBはnullです(データベースコレクションを反復処理すると、予想どおり、マスターとtempdbのみが表示されます-オブジェクトエクスプローラーで表示できるdbです)。これは明らかにセキュリティに関係しています。オブジェクト エクスプローラーでテーブルが表示されない場合、SMO を介してテーブルにアクセスすることはできません。スクリプトを生成できるようにするための回避策または代替方法のアイデアはありますか?
どうも!
sql-server - SQLServerSMOからテーブルをスクリプト化するときにテーブル名を変更する方法
SMOを使用してスクリプト化するテーブル「foo」があるとします。生成されたスクリプトでテーブルが「foo2」などの別の名前を持つようにする方法はありますか?
これを行うと、foo.Nameを設定しようとしたときにこの例外が発生します。
「オブジェクトはコレクションのメンバーであるため、このオブジェクトに対して操作を実行できません。」
SMOでこれを行う方法はありますか?
c# - 外部キーが参照するテーブルを取得する方法
まだ答えが見つからない小さな質問があります。C# で Microsoft.SqlServer.Smo を使用して、外部キー列が参照しているテーブルを取得するにはどうすればよいですか?
sql-server - SQL Server Management Studio GUIによって返されるソースと同一のSQL Serverストアドプロシージャソースをプログラムで取得しますか?
SQL Server Management Studio でそのストアド プロシージャを右クリックして [変更] を選択したときのように、SQL Server 2005 からまったく同じストアド プロシージャ ソースをプログラムで取得する方法についての指針はありますか?
私は SMO を使用しようとしていますが、いくつかのテキストの違いがあります。プロシージャには常に ALTER ではなく CREATE があり、プログラムで取得しているバージョンで GO が欠落しているなど、ヘッダーにいくつかの違いがあります。これらを修正することはできますが、おそらくもっと良い方法がありますか?
ここでも、SQL Server 2005 で SMSE を使用しています。Visual Studio 8 2008 経由で SMO を使用します。
更新: ストアド プロシージャを取得する方法の基本を説明するいくつかの回答を得ました。私が探しているのは、GUI が生成するものと同一 (またはほぼ同一) のテキストを取得することです。
例: sp_mysp の場合、Management Studio で右クリックし、[変更] を選択します。これにより、次が生成されます。
プログラムで同じことを取得したいと思います (ヘッダーの GO と、それが ALTER PROCEDURE であることに注意してください。理想的には、取得したソースのプログラムによる修正を最小限に抑えてこれを取得したいと思います。
Script Date の詳細が異なるものだけを入手できれば幸いです。. .
sql-server - SQL SMO:データベースの物理ファイル名のパスを取得する方法は?
データベースのmdf/ldfファイルの物理ファイルパスを返そうとしています。
次のコードを使用してみました。
ただし、これは例外をスローします "'database.PrimaryFilePath'はタイプ'Microsoft.SqlServer.Management.Smo.PropertyNotSetException'の例外をスローしました-これを実行しているデータベースが存在し、そのmdfファイルがc:\にある場合でもプログラムファイル\MicrosoftSQLServer\ MSSQL.1 \ MSSQL
私は何が間違っているのですか?
c# - SMO を使用して最近のバックアップを検索する
SMO を使用してデータベースの最新のバックアップを見つける方法を知っている人はいますか?
sql-server - SQL Server SMO が DLL の欠落を訴える
わかりました、私はウェブ、BOL、さまざまなフォーラムを精査しましたが、答えには近づいていません...うまくいけば、あなたの素晴らしい人々が手を貸してくれるでしょう...
ネットワーク上には十数台の SQL Server (約 2k、約 2005) があります。.NET アプリケーションで SMO オブジェクトを使用して、標準的な情報を取得しています。私の問題は、不足している DLL (Microsoft.SqlServer.BatchParser.dll) に要約されるようです。ただし、この DLL は他の SQL DLL (Microsoft.SqlServer.ConnectionInfo.dll、Microsoft.SqlServer.Smo.dll、Microsoft.SqlServer.SmoEnum.dll、Microsoft.SqlServer.SqlEnum.dll など) には付属していません。 . また、Microsoft のサイトから SMO オブジェクトを含む SS2005 機能パックをダウンロードしましたが、うまくいきません。
現在コメントされている行のコメントを解除しない限り、次のコードは機能します。その場合、以下のエラーが発生します。
エラー: ファイルまたはアセンブリ 'Microsoft.SqlServer.BatchParser, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
注、VB.NETを使用してSSISからこれも試しましたが、同じ動作です。
任意の考えをいただければ幸いです。
ありがとう。