問題タブ [sql-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.
c# - SQL SMO がテーブルを列挙しない
私はこれを尋ねるだけで愚か者のように感じますが、Google から何の助けも得られず、SMO の単純な検索で SO のすべての結果をページングしましたが、それも表示されませんでした.
短いバージョンは、私が T4 をいじり始めているということです。私はOleg Sych の最初のチュートリアルを拡張して、すべてのテーブルの列挙を提供し、(私見ではばかげた) 削除プロシージャを作成します。これは単なる実験なので、まったく役に立たなくても問題ありません。:)
Oleg のチュートリアルへの拡張は次のようになります。
Tables
問題は、コレクションからテーブルが返されないことです。これは、私が生成しているテーブル カウントの SQL コメントによって検証され、出力は0
.
書かれているように、上記のコードは次を生成します。
ただし、for ループを削除して、このデータベースに存在する有効なテーブル名を手動で指定すると、そのテーブルに対して (これもばかげた) proc が生成されます。
テーブルはスキーマに分割されていますが、それは重要ですか? また、これは SQL2005 インスタンスに反するものです。問題が発生する可能性はありますか?
最後に、Synonyms コレクションを介して同義語を列挙できないこともわかりました。(テーブルはスキーマ内にあるが、同義語が定義されているので、私は賢くてそのルートに行くと思っていました。しかし...サイコロはありません。)
繰り返しますが、上記のコードは当然製品ではなく、製品に値するものでもありません。私は T4 と SMO の両方を学ぼうとしていますが、途方もなく単純だと思っていたことをしようとして障害にぶつかりました。:)
sql - SQL データベース間で 2 つのストアド プロシージャを比較する
同じデータベースの 2 つのバージョンがあり、それらの間でいくつかのオブジェクト (ストアド プロシージャ、ビューなど) を比較する必要があります。
実際には、SQLDMO-SQLSMO を使用して各オブジェクトのテキストを取得し、テキスト比較を実行します。これは効果的ですが、tan 1000 以上のオブジェクトがある場合、最も時間がかかります。
私の質問はです。この比較を実行する簡単な方法はありますか? おそらくデータベースで生成されたMD5キーですか?
sql-server - SQL 2016 SMO でユーザー アカウントの偽装が失敗する
ローカル システム アカウントを使用して Windows WCF サービスを実行しています。サービス内から、ドメイン ユーザー アカウントで SMO を使用して SQL Server インスタンスに接続しようとしています。
以下に示すコードは、SQL Server 2014 SDK の SMO を使用している場合に正常に動作しますが、SQL Server 2016 CTP 3.2 SMO を使用すると、次のような例外がスローされます。
ユーザー {ドメイン}{ローカル マシン名} のログインに失敗しました
ここで、サーバー接続オブジェクトでドメイン管理者の資格情報を指定しました。
注: ローカル システム アカウントの代わりにドメイン管理者アカウントを使用して Windows サービスを実行すると、以下のコードは例外なく正常に動作します。
SQL 2016 SMO バイナリは、指定されたユーザー アカウントを偽装できないようです。
よろしく
アシッシュ
c# - データベースのアタッチ/デタッチ イベントをサブスクライブする方法は?
データベースで動作し、毎月新しいデータベースを作成する C# アプリケーションを作成しています。
古いデータベースは、SQL Management Studio またはその他の方法でユーザーがデタッチおよびアタッチできます。
SQLサーバーイベント(存在する場合)をリッスンし、データベースが接続または切断されたときにキャッチする方法を見つけようとしています。
操作が発生するattach
と、アプリケーションはデータベースをチェックし、テーブル スキーマを最新バージョンに更新する必要があります。
私は SQL SMO も学んでおり、このライブラリがイベント リスナーを提示してくれると考えていましたが、それらを見つけることができませんでした。
もちろん、数秒ごとに新しいデータベースをチェックするスレッドまたはタイマーを実行することもできます。私はそれを試し、実行SQLServer.Databases.Refresh()
するとデータベースリストが更新され、それを繰り返して作業できます。
しかし、これを達成するためのより簡単な方法はありますか? OnDatabaseAttach
どこかでみたいなイベントがあるかも?
編集
私を正しい方向に導いてくれたelsausmcに感謝します。少し検索してServerEventSet
、このページにたどり着きました。
簡単なテストを行ったServerEvent.CreateDatabase
ところ、データベースが作成または接続されたときに起動しますがServerEvent.DropDatabase
、デタッチでは起動しません。ひょっとしたら別のイベントかもしれません。それは私が次に見つけることです。ありがとうございました :)
10 以上の異なるフレーズをグーグルで検索しましたが、smo server events
. 愚かな私。