問題タブ [sp-msforeachtable]

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 投票する
4 に答える
39271 参照

sql-server - sp_msForEachTable から実行すると、QUOTED_IDENTIFIER が原因で ALTER INDEX が失敗する

テーブルのインデックスを再構築しようとすると:

それはうまくいきます。

でも電話したら

同じテーブルに到達すると、次のように失敗します。

メッセージ 1934、レベル 16、状態 1、行 2
次の SET オプションの設定が正しくないため、ALTER INDEX は失敗しました: 'QUOTED_IDENTIFIER'。計算列のインデックス付きビューやインデックス、フィルター選択されたインデックス、クエリ通知、XML データ型メソッド、空間インデックス操作で使用する SET オプションが正しいことを確認します。


そして、それが同じテーブルであることを確認するには:

結果は次のとおりです。

私は何を間違っていないのですか?


:

正常に動作します!

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

sql - すべてのテーブルからコピーし、すべてのテーブルに挿入 (sp_MSforeachtable の代替)

すべてのテーブルから別のスキーマの同じ名前のテーブルにデータをコピーしようとした経験を共有することにしました。私の経験は、サポートされていない、率直に言って制限されsp_MSforeachtableた .

目的:データベース内のすべてのテーブルから、スキーマが異なる同じ名前のテーブルにデータをコピーする

についての簡単なメモ sp_MSforeachtableSO でこのストアド プロシージャについて質問するほとんどの場合、サポートされていない機能を使用するべきではないという回答が返ってきます。これは単に真実ではありません。私たちがすべきでないことは、サポートされていない機能に基づいてプラクティスや設計上の決定を行うことです。しかし、ある特定の時点で、サポートされていない機能が存在し、その時点で必要な機能を 1 回限りのスタイルで実行する場合は、運が良かったと考えて、ぜひそれを使用し、予期しない動作に注意してください。このような機能を使用する場合は、出力がすばやく簡単に検証できる単純な操作に固執するのが最善です。

そうは言っても、また にはいくつかの実際の制限があるためsp_MSforeachtable、データベース内のすべての (または特定の) テーブルに対してステートメントを実行する別の方法を提示していますが、それほど複雑ではありません。私の問題を例として使用しています。

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

sql - sp_MSforeachtable を使用して複数行のクエリを実行する方法

sp_MSforeachtable を使用してすべてのテーブルにインデックスを追加するにはどうすればよいですか? エラーが発生し続けます。

そのようなエラーの 1 つ:

コマンド内に宣言を配置しようとしましたが、次のエラーが発生しました。


これは構文エラーを修正するための更新された試みであり、テスト SQL も同様ですが、それでも奇妙なエラーが発生しました。結局、ストアド プロシージャで問題を解決し、各テーブルのストアド プロシージャを呼び出しました。

これは約2ダースのテーブルで機能しますが、次のような奇妙なエラーが発生します

メッセージ 1934、レベル 16、状態 1、行 9 次の SET オプションの設定が正しくないため、CREATE INDEX が失敗しました: 'QUOTED_IDENTIFIER'。計算列のインデックス付きビューやインデックス、フィルター選択されたインデックス、クエリ通知、XML データ型メソッド、空間インデックス操作で使用する SET オプションが正しいことを確認します。

そこで、別の戦略を使用することになり、ストアド プロシージャを作成してインデックスを作成しました。ストアド プロシージャ内でインデックスを作成するにはどうすればよいですか?

0 投票する
0 に答える
272 参照

sql - sp_MSforeachtable の悪用 (修正が必要)

最近、誰かが を使用して私たちのデータベースにハッキングしたsp_MSforeachtableため、複数行のクエリが正しい場合。

今私の質問は、私がどのように変更できるかですsys.sp_MSforeachtable。彼は、@command1および他のコマンドを使用してクエリを実行し、テーブルを削除しています。

次に、私のSQLプロファイラが表示されます:

誰かがこれらのものを保護する方法を教えてもらえますか? SQL プロファイラーは、アプリケーション名が PHP5 であることを示しているので、おそらく登録ページまたはログイン パネル インジェクション..

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

sql - マルチパート識別子の取得は、sp_MSforeachtable を使用してバインドできませんでした

を使用してsp_MSForeachtable、すべてのテーブルの列名を取得し、列名を単一の文字列に連結しています。次のクエリを使用しています。単一のテーブルの変数を介してパラメーターを提供して同じことを実行しましたが、完全に機能しますが、SP から実行すると、「マルチパート識別子 "dbo.TableNm" をバインドできませんでした」というエラーで失敗します。

エラーは、異なるデータベースに同じ名前の複数のテーブルがあることに関連している可能性があると考えたため、データベースを事前に修正しようとしましたが、それでも同じエラーが発生します。

まだまだ頑張りますが、アイデアが尽きてしまいました。何かご意見は?

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

sql-server - sp_MSForEachTable からの結合クエリ

次のクエリを使用して、テーブルがユーザーによって最後に更新された時刻を取得しています。

しかし、結果ウィンドウでは、結果ごとに 1 行のテーブルのようになります。結果を並べ替えることができるように、それらを一意のクエリとして結合する方法はありますか?

SQL Server 2008 R2 と Microsoft SQL Server Management Studio を使用しています。

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

sql-server - 同じクエリで sp_msforeachtable と sp_msforeachdb の両方を使用する方法は?

「sp_msforeachdb」ループ内で実行されている「sp_MSforeachtable」ループ内でテーブルを参照する方法はありますか?

たとえば、次のクエリでは、「?」常にデータベースを参照しています:

その結果:

私は次のようなものが欲しい:

何を変更すればよいですか?


解決しました。Sean が提案したように、ow カーソルを使用しました。しかし、Ben Thul によって提案された @replacechar ソリューションは、まさに私が探していたものです。

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

sql-server - 変数に対してアクションを実行する sp_msforeachtable

sp_msforeachtable を使用して、別のテーブルに格納されている変数/テーブル名と一致するすべてのテーブルと変数に対してアクションを実行する方法を見つけようとしています。

IE

テーブル、変数、アクションの3つの列を持つテーブルがあります

sp_MSforeachtable を使用して、一致するテーブルと変数を確認し、一致する場合はテーブルでそのアクションを実行しようとしています。

  1. sp_MSforeachtable ステートメントで変数名をどのように呼び出しますか? 私は使用することを知っていますか?テーブル名についてですが、変数名=変数名の場合はXを実行する方法がわかりません

  2. この文書化されていない SP を使用せずにこれを行う別の方法はありますか?

もっとうまく説明しようとします:

たくさんのテーブルから個人情報を消去しようとしています...次のようなテーブルがあります(テーブルのフォーマット方法がわからないので、各エントリが個別の行であると想像してください。最初の行は名前、A、 '' に設定)

変数

電話番号
名前


A
A
B

アクション
''
に設定 '555-555-5555' に
設定 ' ' に設定

次に、テーブルでいっぱいのデータベースがあります....テーブルAで、コードで変数 'Name' のすべての行
を '' (空白)
に設定し、電話番号を '555-555-5555'
などに設定します。次に、テーブル B に移動して、同じことを行います。

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

sql-server - SQL Server sp_msforeachtable

sp_msforeachtableSQL Server ストアド プロシージャの使用に問題があります。

EXECUTE次のSQLクエリを使用して、1つのテーブルにステートメントの出力を入れたい:

これはエラーをスローします

文字列型やバイナリは省略されます

テーブルごとに。

追加情報: テーブル "DaneOSpuscie" には、データベース名、varchar 型のテーブル名の 2 つの列しかありません。