我有一个脚本来生成创建表脚本。你可以在我对这个问题的回答中看到它。
关于这个问题here,看到答案有关于如何向表添加分区以及如何从表中删除分区的示例,我想看看任何阶段的脚本。
我找到了这个链接:如何找到应用于表的分区函数文本
如何生成用于创建分区函数和分区模式的脚本?
我正在编写一个脚本来生成create partition function
如下所示的 ,但它仅适用于我自己的PF_year分区函数,因为was很难克服sys.partition_range_values具有sql_variant数据类型作为值的事实。
当我使用案例时,出现以下错误:
消息 206,级别 16,状态 2,第 35 行
操作数类型冲突:int 与日期不兼容
然后在他的精彩回答Dan Guzman 中,向我们展示了SQL_VARIANT_PROPERTY一些我不知道的奇妙事物,现在我是一名新的 DBA 和新人。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
RADHE = 'CREATE PARTITION FUNCTION' + space(1) + quotename(spf.name) +
'(' +
COALESCE(baset.name,'data type not found') + ')' + CHAR(13) +
'AS RANGE ' + CASE WHEN CAST(spf.boundary_value_on_right AS …Run Code Online (Sandbox Code Playgroud) database-design sql-server optimization partitioning sql-server-2014
是否可以创建一个存储过程,在与存储过程本身所在的数据库不同的数据库中创建表触发器 (DDL) 。数据库位于同一服务器实例上。如果是,那么如何?
例如,这不起作用:
create PROCEDURE [dbo].[CreateTriggrer]
@db varchar(60)
AS
BEGIN
SET NOCOUNT ON;
declare @statement nvarchar(max) = N'CREATE TRIGGER [dbo].[TestTrigger]
ON [$database$].[dbo].[TestTable]
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
PRINT ''test''
END'
set @statement = REPLACE(@statement,'$database$',@db)
EXEC dbo.sp_executesql @statement = @statement
END
Run Code Online (Sandbox Code Playgroud)
当这样调用时:
EXEC [dbo].[CreateTriggrer] @db = N'TestDatabase'
Run Code Online (Sandbox Code Playgroud)
它返回此错误:
消息 2108,级别 15,状态 1,过程 TestTrigger,第 6 行
无法在“TestDatabase.dbo.TestTable”上创建触发器,因为目标不在当前数据库中。
这是公平的。有没有办法实现我想要的?