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)
其他对象
以下是一些用于查找与所有对象类型相关的元数据的资源: