Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
CREATE FUNCTION dbo.udf_Computed (@a INT)
RETURNS INT
AS BEGIN
RETURN @a
END
GO
CREATE TABLE dbo.tbl_Table (
ID INT,
Value AS dbo.udf_Computed(ID)
)
GO
DROP FUNCTION dbo.udf_Computed
GO
Msg 3729, Level 16, State 1, Line 2
Cannot DROP FUNCTION 'dbo.udf_Computed' because it is being referenced by object 'tbl_Table'.
BEGIN TRY
EXEC sys.sp_refreshsqlmodule @name = @obj_name, @namespace = N'OBJECT'
END TRY
BEGIN CATCH
INSERT INTO #objects (obj_id, obj_name, err_message, obj_type)
SELECT @obj_id, @obj_name, ERROR_MESSAGE(), @obj_type
END CATCH
BEGIN TRY
EXEC sys.sp_refreshsqlmodule @name = @obj_name
END TRY
BEGIN CATCH
INSERT INTO #objects (obj_name, err_message, obj_type)
SELECT @obj_name, ERROR_MESSAGE(), @obj_type
END CATCH
BEGIN TRY
BEGIN TRANSACTION
EXEC sys.sp_refreshsqlmodule @name = @obj_name, @namespace = N'OBJECT'
COMMIT TRANSACTION
END TRY
BEGIN CATCH
INSERT INTO #objects (obj_id, obj_name, err_message, obj_type)
SELECT @obj_id, @obj_name, ERROR_MESSAGE(), @obj_type
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION
END CATCH
INSERT INTO #objects (obj_id, obj_name, err_message, obj_type)
SELECT @obj_id, @obj_name, ERROR_MESSAGE(), @obj_type
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION
INSERT INTO #objects (obj_id, obj_name, err_message, obj_type)
SELECT @obj_id, @obj_name, ERROR_MESSAGE(), @obj_type
END CATCH
то проблем не возникает.
Find invalid objects