Sae*_*ati 5 sql-server scripting
我需要获取SQL Server 数据库中对象的创建脚本。我需要用于创建它的完全相同的脚本。就像当您使用 SSMS 更改已定义的视图时,脚本就在那里,就像您之前定义的那样。
我需要在 T-SQL 中执行此操作。SQL Server 在哪里存储与数据库对象相关的脚本?我在系统目录视图中找不到相关视图。
我试图找到的是这样的:
select creation_script -- I know this column doesn't exist
from sys.objects
where name = 'CustomersView'
Run Code Online (Sandbox Code Playgroud)
虽然不争论最全面的方法是像 Remus 在他的回答中建议的那样使用 SMO ,但这个问题确实要求通过 T-SQL 获取信息,并且某些对象确实存在该信息。请记住,此信息:
GRANT
/DENY
语句。但是您可以从sys.database_permissions
和获取该信息sys.database_principals
。IF EXISTS DROP
逻辑ANSI_NULLS
和QUOTED_IDENTIFIER
。您sys.sql_modules
通过[uses_ansi_nulls]
和[uses_quoted_identifier]
字段获得的那些。dbo
,则必须通过OBJECT_SCHEMA_NAME([object_id])
对象目录视图
在sys.sql_modules目录视图有充分CREATE...
的下列对象的语句(任何加密,将返回NULL
的[definition]
):
SELECT OBJECT_SCHEMA_NAME([object_id]) AS [SchemaName],
OBJECT_NAME([object_id]) AS [ObjectName],
*
FROM sys.sql_modules;
Run Code Online (Sandbox Code Playgroud)
的sys.check_constraints和sys.default_constraints目录视图将返回它们各自的约束作为逻辑部分[definition]
:
SELECT *
FROM sys.check_constraints;
SELECT *
FROM sys.default_constraints;
Run Code Online (Sandbox Code Playgroud)
元数据功能
该OBJECT_DEFINITION函数将返回那就是在相同的数据[definition]
前面提到的三个目录视图的领域,基于指定的[object_id]
:
SELECT so.name,
so.[type],
so.type_desc,
OBJECT_DEFINITION(so.[object_id]) AS [Definiton]
FROM sys.objects so
WHERE OBJECT_DEFINITION(so.[object_id]) IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
其他对象
以下是一些用于查找与所有对象类型相关的元数据的资源:
归档时间: |
|
查看次数: |
14457 次 |
最近记录: |