我正在研究一個腳本,該腳本需要在許多不同的SQL Server中運行。其中一些共享相同的結構,換句話說,它們是相同的,但文件組和數據庫名稱不同。這是因爲每個客戶一個。只有在數據庫包含模式時才創建視圖或SP
無論如何,我想運行一個腳本時,如果我選擇了錯誤的數據庫,它不應該被執行。我試圖維護一個乾淨的數據庫。這裏是我的例子,它只適用於刪除視圖(如果存在),但不適用於創建新視圖。我也想知道如何創建一個存儲過程。
IF EXISTS (SELECT *
FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[ContentModDate]')
AND OBJECTPROPERTY(id, N'IsView') = 1)
AND CHARINDEX('Content', DB_NAME()) > 0
DROP VIEW [dbo].[ContentModDate]
GO
IF (CHARINDEX('Content', DB_NAME()) > 0)
BEGIN
CREATE VIEW [dbo].[Rx_ContentModDate] AS
SELECT 'Table1' AS TableName, MAX(ModDate) AS ModDate
FROM Tabl1 WHERE ModDate IS NOT NULL
UNION
SELECT 'Table2', MAX(ModDate) AS ModDate
FROM Table2 WHERE ModDate IS NOT NULL
END
END
GO
你的問題到底是什麼? – 2010-03-21 15:24:03
你說..「但不適用於創建一個新的」。它是否在創建新視圖時拋出任何錯誤? – 2010-03-21 15:33:20