問題タブ [sysobjects]

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

sql-server - テーブル情報の取得

テーブル情報にテーブル名を付けて取得しようとしているので、次のようなクエリを作成しました。

問題は、「Admin」という名前のテーブルが2つあるのに、スキーマが異なることです。したがって、このクエリを実行すると、次のようになります。

テーブル名が同じであるため、2つのレコードを取得します。スキーマ名に基づいてフィルターで除外する方法はありますか?

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

sql - 「myStoredProcedure」という名前のストアド プロシージャがどのデータベースにあるかを確認するにはどうすればよいですか?

接続している SQL サーバーには多数のデータベースがあります。

'myStoredProcedure' という名前のストアド プロシージャが配置されているデータベースを見つけるには、sysobjects をどのようにクエリすればよいですか?

クエリはデータベース名を返す必要があります。

ありがとう

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

sql-server - システム テーブルへの外部キーを作成する

列を使用してテーブルを作成したい:

アイデアは、それIdProcedureが への FKであるということsys.objectsです。

このクエリを作成すると:

それは正常に動作しますが、これは:

私に言います:

外部キー 'FK_SysProcedure' が無効なテーブル 'sys.objects' を参照しています。

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

sql-server - SQL Server の try/catch ブロックでエラーに直面した objectid を見つける

SQL Server でエラーを処理するために try...catch 命令を使用しています。デフォルトのシステム エラー メッセージの代わりに独自のメッセージを表示できるように、オブジェクト (エラーに直面したフィールドのコードなど) を認識する必要があります。 .

これが私のストアドプロシージャです:

出力は次のとおりです。

しかし、実際には、sysmessages でコード 2601 を含む以下のエラー メッセージのパターンで '%.*ls' を探しています。

それ ('%.*ls') を見つける方法を教えてください。

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

sql-server - sp_procs の dbo.sysobjects から sys.tables への移動

以前は、データベースに依存しないストアド プロシージャを master で作成し、sp_プレフィックスを付けて dbo.sysobjects を参照していました。これは、実行時に、たまたま存在するデータベースにバインドされます。

最終的に、コードを移行して、より新しく使いやすい sys.tables を使用しようとしましたが、ストアド プロシージャがコンパイルされたデータベースにバインドされ、間違ったデータが返されます。

例:

masterNOT 内のテーブルのリストが生成されます。MyOtherDbしたがって、このようなものを作成するときは、コードを文字列でラップして動的に実行する必要があります。コードを書きます。

誰でもこの問題の解決策を持っていますか? これに頭をぶつけたのは私だけではないと確信しています!

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

sql - SQL ユーザーは、UID = ユーザーである sysobjects からオブジェクトを選択できません

オブジェクトが存在するかどうかを判断するために、最初にそのユーザーとして sysobjects をクエリして、特定のユーザーに対して SQL でスキーマの変更を実行しようとするレガシー システムを使用しています。存在する場合は ALTER VIEW ステートメントを作成し、そうでない場合は CREATE VIEW ステートメントを作成します。この場合、ビューは存在しますが、クエリは引き続きオブジェクトの一覧表示に失敗します。

例えば:

問題は、このデータベース内の特定のアカウントがエラーなしでこのクエリを実行でき、そのユーザーが所有するすべてのオブジェクトを返すことです。ただし、他のアカウントは、このクエリによって返されるレコードを取得しません。ユーザーを SA に設定してクエリを実行すると、すべてのユーザー オブジェクトが表示されます。影響を受けるユーザーはスキーマの所有者であり、スキーマに対するビューの作成権限を持っています。作業中のユーザー アカウントと非作業中のユーザー アカウントの間で権限の違いを見つけることができません。

ユーザーがsysobjectsで自分のオブジェクトを照会することを制限する、私が見逃している権限はありますか?

はい、sysobjects が廃止されたことは承知していますが、ここで実際のコードを制御することはできず、代わりにデータベースを修正して、コードが期待どおりに機能するようにする必要があります。

編集:追加の調査結果。問題を複雑にするために、これを正常に実行できます。

これも正常に実行できます。

ただし、where 句または INNER JOIN を介して結合を使用すると、レコードが取得されません。純粋に結合に基づいてレコードへのアクセスを制限するものは何ですか? インデックスの権限?? 私は困惑しています。