問題タブ [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.
sql-server - テーブル情報の取得
テーブル情報にテーブル名を付けて取得しようとしているので、次のようなクエリを作成しました。
問題は、「Admin」という名前のテーブルが2つあるのに、スキーマが異なることです。したがって、このクエリを実行すると、次のようになります。
テーブル名が同じであるため、2つのレコードを取得します。スキーマ名に基づいてフィルターで除外する方法はありますか?
sql - 「myStoredProcedure」という名前のストアド プロシージャがどのデータベースにあるかを確認するにはどうすればよいですか?
接続している SQL サーバーには多数のデータベースがあります。
'myStoredProcedure' という名前のストアド プロシージャが配置されているデータベースを見つけるには、sysobjects をどのようにクエリすればよいですか?
クエリはデータベース名を返す必要があります。
ありがとう
sql-server - システム テーブルへの外部キーを作成する
列を使用してテーブルを作成したい:
アイデアは、それIdProcedure
が への FKであるということsys.objects
です。
このクエリを作成すると:
それは正常に動作しますが、これは:
私に言います:
外部キー 'FK_SysProcedure' が無効なテーブル 'sys.objects' を参照しています。
sql-server - SQL Server の try/catch ブロックでエラーに直面した objectid を見つける
SQL Server でエラーを処理するために try...catch 命令を使用しています。デフォルトのシステム エラー メッセージの代わりに独自のメッセージを表示できるように、オブジェクト (エラーに直面したフィールドのコードなど) を認識する必要があります。 .
これが私のストアドプロシージャです:
出力は次のとおりです。
しかし、実際には、sysmessages でコード 2601 を含む以下のエラー メッセージのパターンで '%.*ls' を探しています。
それ ('%.*ls') を見つける方法を教えてください。
sql-server - sp_procs の dbo.sysobjects から sys.tables への移動
以前は、データベースに依存しないストアド プロシージャを master で作成し、sp_
プレフィックスを付けて dbo.sysobjects を参照していました。これは、実行時に、たまたま存在するデータベースにバインドされます。
最終的に、コードを移行して、より新しく使いやすい sys.tables を使用しようとしましたが、ストアド プロシージャがコンパイルされたデータベースにバインドされ、間違ったデータが返されます。
例:
master
NOT 内のテーブルのリストが生成されます。MyOtherDb
したがって、このようなものを作成するときは、コードを文字列でラップして動的に実行する必要があります。コードを書きます。
誰でもこの問題の解決策を持っていますか? これに頭をぶつけたのは私だけではないと確信しています!
sql - SQL ユーザーは、UID = ユーザーである sysobjects からオブジェクトを選択できません
オブジェクトが存在するかどうかを判断するために、最初にそのユーザーとして sysobjects をクエリして、特定のユーザーに対して SQL でスキーマの変更を実行しようとするレガシー システムを使用しています。存在する場合は ALTER VIEW ステートメントを作成し、そうでない場合は CREATE VIEW ステートメントを作成します。この場合、ビューは存在しますが、クエリは引き続きオブジェクトの一覧表示に失敗します。
例えば:
問題は、このデータベース内の特定のアカウントがエラーなしでこのクエリを実行でき、そのユーザーが所有するすべてのオブジェクトを返すことです。ただし、他のアカウントは、このクエリによって返されるレコードを取得しません。ユーザーを SA に設定してクエリを実行すると、すべてのユーザー オブジェクトが表示されます。影響を受けるユーザーはスキーマの所有者であり、スキーマに対するビューの作成権限を持っています。作業中のユーザー アカウントと非作業中のユーザー アカウントの間で権限の違いを見つけることができません。
ユーザーがsysobjectsで自分のオブジェクトを照会することを制限する、私が見逃している権限はありますか?
はい、sysobjects が廃止されたことは承知していますが、ここで実際のコードを制御することはできず、代わりにデータベースを修正して、コードが期待どおりに機能するようにする必要があります。
編集:追加の調査結果。問題を複雑にするために、これを正常に実行できます。
これも正常に実行できます。
ただし、where 句または INNER JOIN を介して結合を使用すると、レコードが取得されません。純粋に結合に基づいてレコードへのアクセスを制限するものは何ですか? インデックスの権限?? 私は困惑しています。