問題タブ [sp-msforeachdb]
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 - すべてのデータベースのすべてのテーブルで操作を実行します
すべてのデータベースのすべてのテーブルにいくつかの操作を適用するSQLServerスクリプトを作成しようとしています。いくつかの条件が尊重される場合は、いくつかのテーブルの名前を変更する必要があります。それ以外の場合は、テーブルを切り捨てます。
これは私のスクリプトです
エラーが発生しましたが、SQL Serverを初めて使用するため、このスクリプトを修正する方法がわかりません。
助言がありますか?
どうもありがとう
sql-server-2008 - sp_MSforeachdbを使用してデータベースを「ループ」し、1つのデータセットを返します
だから、私は私の仲間のウェブサイトで見つけたコードと格闘してきました:
データベースレベルのセキュリティ、ロール、および明示的なアクセス許可ステートメントを1つの出力で生成したいので、何度もコピーアンドペーストせず、サーバー上のすべてのデータベースで実行されます(もちろんtempdbを除く)。
テーブル変数、一時テーブルなどを使用して、すべてのステートメントが1つのデータセットに含まれるように、現在の状態で機能するが不便なものを変更するにはどうすればよいですか?
sql-server - システム データベースを省略して、SQL Server 2008 エージェント ジョブが ERROR_NUMBER 208 を超えて移動できるようにするにはどうすればよいですか?
サーバー上のすべてのデータベースに対して実行される SQL Server 2008 エージェント ジョブを作成しました。文書化されていない MS 手順を使用していますsp_MSforEachDB
。処理する特定のデータベースのみを指定しており、これらのデータベースが見つかった場合、ERROR_NUMBER = 208
、テーブルを作成して次のデータベースに処理を進めたい。また、テーブルがシステム データベースに作成されないように、システム データベースを省略したいと考えています。処理したいデータベースの名前を指定することで、何も存在しないテーブルを作成できました。以下に示すコードは、「フォーカス」が特定のデータベースに設定されている場合に機能します。また、実行すると、マスター データベースにテーブルが作成されますが、これは望ましくありません。私が作成したコードでやろうとしていることは次のとおりです。 1.「xyz_%」のような名前の SQL サーバー上のすべてのデータベースを選択します 2.テーブル「SESSIONS」が存在する場合は、5 分より古いすべてのレコードを削除します 3.ifテーブル「SESSIONS」が存在しない場合は、それを作成して処理を続行します-これが私が取得する場所です208 error - invalid object because this table does not exist
ジョブが Sessions テーブルがないことを確認すると、ジョブは停止し、他のデータベースは処理されません。すべての名前付きデータベースを 1 で処理する必要があります。SESSIONS テーブルが存在しない場合、「無効なオブジェクト名 'master.SchemaName.sessions'」という 208 エラーが発生します。セッション テーブルのないデータベースに「フォーカス」を設定すると、コードが実行され、テーブルが作成されますしかし、それでもエラー 208 - Invalid object name 'master.SchemaName.sessions' が表示されます。他のエラーは表示されません。
誰かが私のコードを見て、私の問題がどこにあるかを確認できれば、それは素晴らしいことです。
以下の Try Catch を使用して、208 エラーが発生していることを確認しました。また、2 回目の Try Catch で、指定されたスキーマが存在しないか、アクセス権がないことを示すエラー 2760 が表示されます。私はこのサーバーの管理者です。
私は数年間 SQL を使用してきましたが、自分自身を専門家とは考えていません。Google でこれを調査して、以下のコードを作成しました。どんな助けでも大歓迎です。
java - Java アプリケーションで「sp_msforeachdb」を実行する
こんにちはStackOverflowコミュニティ:)
私はあなたに私の問題の1つを共有するために来ました...
SQL Server インスタンスの各データベース内のすべてのテーブルのリストを抽出する必要があります。次のクエリが見つかりました。
Microsoft SQL Server Management Studio では完全に動作しますが、Java プログラム(SQL Server 用の JDBC ドライバーを含む) で実行しようとすると、結果が返されないと表示されます。
私のJavaコードは次のとおりです。
私を助けようとする人に感謝します , 良い一日を:)
編集1:
SQL Server 用の JDBC ドライバーがクエリをサポートしているかどうかわからないので、別の方法で目標を達成しようとします。
私が取得しようとしているのは、SQL Server インスタンス上の各データベースのすべてのテーブルのリストです。出力形式は次のようになります。
だから今、誰かが私がその解決策にたどり着くのを手伝ってくれないかと尋ねています.JavaのJDBC for SQL Server driverを介してSQLクエリを使用しています.
また、 Tim LehnerとMark Rotteveelから得た非常に迅速な回答にも感謝します。
powershell - データセットの sp_msforeachdb
次のコードが、サーバー上のデータベースごとに 1 行ではなく、DataSet (マスター データベース用) から 1 行しか返さない理由を教えてください。
sql - すべてのデータベースでストアド プロシージャを実行し、すべての結果をテーブルに保存する
サーバー内のすべてのデータベースを循環し、ストアド プロシージャを実行して結果テーブルに保存するクエリを作成しようとしています。
これは私がこれまでに持っているものです:
このコードから達成したいことは、サーバー内のすべてのデータベースに対して IC_PURCHASEORDER ストアド プロシージャを実行し、その結果を作成された結果テーブルに記録することです。その後、それらの結果をスーパーバイザーに電子メールで送信し、テーブルをドロップすることができますが、それは別の仕事です. IF ステートメントに構文エラーが存在することはわかっています。その結果、次のエラーが発生します。
私が達成しようとしていることについての洞察を得ることは可能でしょうか? ありがとう!
sql - すべてのテーブルに対する SQL 反復処理
次のコードを実行して、特定の列を持つすべてのテーブルから関連するすべての行を抽出しています。外側IF
は、その反復のテーブルに列が存在するかどうかを確認することになっています。そうでない場合は、その反復を終了して次のテーブルに移動する必要があります。テーブルにGCRecord
列がある場合は、そのテーブルがレコードを返すかどうかを確認する必要があります。返すレコードがない場合は、その反復を終了して次のテーブルに移動する必要があります。レコードがある場合は、SSMS に表示する必要があります。
SSMS は有効なエントリを持つグリッドのみを返すため、機能しているようです。私が理解できないのは、なぜまだこれらのエラーが発生するのですか?
編集
提案を使用した後、私はこれを持っています:
このエラーを返します:
この行を参照するもの
アップデート
機能しないステートメントをネストしようとEXEC
しましたが、選択した回答を使用して、エラーなしで探していた結果が得られました。
sql-server - 同じクエリで sp_msforeachtable と sp_msforeachdb の両方を使用する方法は?
「sp_msforeachdb」ループ内で実行されている「sp_MSforeachtable」ループ内でテーブルを参照する方法はありますか?
たとえば、次のクエリでは、「?」常にデータベースを参照しています:
その結果:
私は次のようなものが欲しい:
何を変更すればよいですか?
解決しました。Sean が提案したように、ow カーソルを使用しました。しかし、Ben Thul によって提案された @replacechar ソリューションは、まさに私が探していたものです。