-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrefreshView.js
70 lines (55 loc) · 1.89 KB
/
refreshView.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
module.exports = function(drop) {
return `
SET NOCOUNT ON;
DECLARE @ViewName VARCHAR(255);
DECLARE @error_table TABLE
(
view_name VARCHAR(255) ,
error_msg VARCHAR(MAX)
);
DECLARE view_cursor CURSOR FAST_FORWARD
FOR
--- Get all the user defined views with no schema binding on them
SELECT DISTINCT
'[' + ss.name + '].[' + av.name +']' AS ViewName
FROM sys.all_views av
JOIN sys.schemas ss ON av.schema_id = ss.schema_id
WHERE OBJECTPROPERTY(av.[object_id], 'IsSchemaBound') <> 1
AND av.Is_Ms_Shipped = 0
OPEN view_cursor
FETCH NEXT FROM view_cursor
INTO @ViewName
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRY
-- Refresh the view
EXEC sp_refreshview @ViewName;
-- RAISERROR('%s', 10, 1, @ViewName) WITH NOWAIT;
END TRY
BEGIN CATCH
IF @@trancount > 0 ROLLBACK TRANSACTION
--- Insert all the errors
IF (1=${drop ? 1 : 0})
BEGIN
EXEC ('DROP VIEW ' + @ViewName)
END ELSE
BEGIN
INSERT INTO
@error_table(view_name, error_msg)
SELECT @ViewName, ERROR_MESSAGE();
END
END CATCH
FETCH NEXT FROM view_cursor INTO @ViewName;
END
--- Check if there was an error
IF EXISTS (SELECT TOP 1 1 FROM @error_table)
BEGIN
SELECT view_name ,
error_msg
FROM @error_table;
END
CLOSE view_cursor
DEALLOCATE view_cursor
IF OBJECT_ID('dbo.utSchemaHash') IS NOT NULL SELECT dbo.utSchemaHash() hash
SET NOCOUNT OFF;`;
};