リレーショナルデータベースには、ビュー、ストアドプロシージャ、トリガー、関数、インデックスなどのさまざまなデータベースオブジェクトがあります。 何度も、これらのオブジェクトの定義を表示したいと思います。 SSMS graphical wayまたはt-SQLのいずれかを使用してスクリプトを生成できます。
たとえば、SQLビューの定義を表示します。. スクリプトを生成する両方の方法を検討しましょう。,
オブジェクトの定義を表示するには、さまざまな方法
SSMSスクリプトウィザード:
データベースを展開し、ビューに移動します。 スクリプトを生成する特定のビューを右クリックし、スクリプトビューをクリックします->作成します。
次の方法でスクリプトを取得できます。
- 新しいクエリウィンドウで
- スクリプトを取得します。,SQLファイル
- クリップボードにスクリプトをコピーします
- SQLエージェントジョブでスクリプトを取得します
スクリプトの生成ウィザード
SSMSでスクリプトの生成ウィザードを使用してスクリプトを生成することもできます。 データベースを右クリックし、タスクに移動します->スクリプトを生成します。
スクリプトの生成ウィザードで、特定のデータベースオブジェクトを選択し、次へをクリックします。
ウィザードを完了してスクリプトを取得できます。,
Using t-SQL:
t-SQLクエリを使用して、オブジェクトのスクリプトを取得することもできます。 次のt-SQLメソッドを使用して、オブジェクトの定義を取得できます。
- Information_Schamaを使用してスクリプトを取得します。,ビュー:
ソースデータベースで次のクエリを実行し、where句でオブジェクト名を指定します
1234table_nameをviewnameとして選択し、view_definitionをviewdefinitionとしてinformation_schemaから選択します。,Viewswhere TABLE_NAME=’vEmployee’ - Sp_helptext system procedure:
You can use sp_helptext system procedure as well to get the script. You need to specify the object name along with the schema if it is other than dbo.
1EXEC sp_helptext ‘.,’ - object_definition関数
object_definition関数を使用して、オブジェクトのスクリプトを生成することもできます。 次のクエリでは、AdventureWorks2017データベースのビューvemployeeにobject_definition関数を使用します
1select object_definition(object_id(n’.,’))
オブジェクトスクリプトを生成するために必要なパーミッション
DBAがオブジェクトにアクセスするためのユーザーパーミッションを制御するために不可欠な側面です。 多くの場合、ユーザーはデータベースに対する追加の権限を必要とします。 既定では、publicロールを持つユーザーには、オブジェクトの定義を表示する権限はありません。 開発者がオブジェクト定義を取得して、非実稼働環境でこれを実行できるようにすると便利です。, また、特に本番環境では、ユーザーに特権のある権限を与えたくありません。
新しいデータベースユーザーを作成し、AdventureWorks2014データベースでpublicロールを提供しましょう。
パブリックロール権限を持つログイン資格情報を使用してSQL Serverに接続します。
クエリを実行して、オブジェクトのビュー定義を取得します。 コマンドのsp_helptext、エラーメッセージオブジェクトが存在しないデータベースです。,
INFORMATION_SCHEMAを使用してスクリプトを取得しようとすると。エラーメッセージは表示されませんが、行は返されません。
パブリックロールアクセス用のオブジェクトが表示されないため、SSMSも使用できません。
SQL Serverの定義表示アクセス許可を使用して、ユーザーがオブジェクト定義を表示できるようにします。 パブリックロールまたは個々のユーザーにこのアクセスを提供できます。,
- 公開ロールを持つすべてのユーザーにビューオブジェクト定義権限を提供する場合は、次のクエリを実行します。,v>
123USE AdventureWorks2017GOGRANT VIEW ANY DEFINITION TO Rajendra
1
|
GRANT VIEW DEFINITION on ., TO Rajendra
|
Let’s provide access to a specific user (Rajendra) on a specific object ( .) and verify the permissions to view the definition of an object.
1
|
EXEC sp_helptext ‘.,’
|
前のセクションで指定されたオブジェクト定義を表示するには、他の方法を試すことができます。 リフレッシュできる接続SSMSとして表示すべてのオブジェクトを割り当てた後でのアクセス権を表します。
sp_helprotectコマンドを使用してパーミッションを追跡できます。,
- 以下のスクリーンショットでは、次のことが観察できます。
- Object:vEmployee
- Owner(Schema):HumanResources
- Grantee(User):Rajendra
- Grantor(permission grantor):dbo
- permission:grant
- action(rights):view definition
revoke view definition permission
前のセクションで、Sql Serverのユーザー、ロール、またはオブジェクトにview definition権限を付与する方法を学びました。, また、これらのビュー定義の権限を取り消す方法を知ることも重要な側面です。 多くの場合、ユーザーに一時的なアクセス権を与え、後でそれを取り消したい場合があります。 Revoke View Any Definitionコマ,iv>
1
2
3
|
USE AdventureWorks2017
GO
REVOKE VIEW DEFINITION on ., Rajendraへ
|
結論
この記事では、オブジェクトの定義を表示するためのSQL Serverのビュー定義アクセス許可を付与および取り消し これにより、オブジェクト定義の権限を管理するために必要な情報が提供されます。 あなたが任意のコメントや質問がある場合は、以下のコメントにそれらを残すこと自由に感じる。,
- 著者
- 最近の投稿
彼は、単一のトピックに関する記事の最大の無料のオンラインコレクションの一つの作成者であり、Sql Server Always On Availability Groupsに関する50部のシリーズです。 SQL Serverコミュニティへの貢献に基づいて、彼はSQLShackで2020年と2021年に連続して権威ある”Best author of the year”を含むさまざまな賞で認識されています。,
Rajは常に新しい挑戦に興味があるので、彼の文章でカバーされているテーマに関するコンサルティングの助けが必要な場合は、rajendraで連絡することがでgupta16@gmail.,com
Rajendra Guptaによるすべての投稿を表示
- SQL ServerのセッションタイムアウトAlways On Availability Groups-February8,2021
- AWS RDS SQL Serverのマイナーおよびメジャーバージョンアップグレードの実行-January29,2021
- aws Rds Postgresqlインスタンスのデプロイ-January27,2021
Leave a Reply