私が UDF で使用するこのトリックを試すことができます。
それらを削除して再度追加するのに問題がありました(ほとんどの場合、ストアドプロシージャで行うことです)。そこで、以下の冪等な解決策を思いつきました。
Use [$(DBName)]
GO
:Error $(ErrorOutputFileFromCommandLine)
/*
Create a stubbed version if it does not exist... if it exists, this could shouldn't run, thus not violating permissions
*/
if NOT exists (select * from sysobjects
where id = object_id('dbo.udfMySuperCoolUDF') and sysstat & 0xf = 0)
BEGIN
print 'Creating the stubbed version of dbo.udfMySuperCoolUDF'
EXEC ( 'CREATE FUNCTION dbo.udfMySuperCoolUDF (@i as smallint , @j as smallint ) RETURNS bit AS BEGIN RETURN 0 END')
END
GO
ALTER FUNCTION dbo.udfMySuperCoolUDF (@ValidationLookupCategoryKey smallint , @ValidationLookupKey smallint )
RETURNS bit AS
BEGIN
declare @exists int
select @exists = 0
/* Logic Here */
return @exists
END
2番。
「sqlcmd」モードを調査します。$(MyVariable) を「そのまま」保持し、sqlcmd モード (SSMS 内) および配置 (sqlcmd.exe) でそれらを操作する方法を学びます。