Skip to content

Commit d0a787f

Browse files
authored
Add files via upload
1 parent 058a1b2 commit d0a787f

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

PMDB.Update Synonyms.sql

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
2+
CREATE PROCEDURE [dbo].[UpdateSynonyms]
3+
@Database nvarchar(256), -- such as 'linkedserver.database' or just 'database'
4+
@Schema sysname, -- such as 'dbo' or 'P6'
5+
@Base_Object_Name_Like nvarchar(50), -- such as '%PMDB%'
6+
@Object_Name nvarchar(50)
7+
AS
8+
9+
/*
10+
'---------------------------------------------------------------------------------------
11+
' Purpose: This procedure creates Synonyms for the Primavera tables
12+
' Example: EXEC UpdateSynonyms '[LINKED_SERVER_NAME].PMDB', 'dbo', '%PMDB%', NULL
13+
' EXEC UpdateSynonyms 'PMDB_TEST', 'P6', '%PMDB%', NULL
14+
'---------------------------------------------------------------------------------------
15+
16+
*/
17+
18+
CREATE TABLE #Tables
19+
(
20+
TableID int identity(1,1) NOT NULL PRIMARY KEY CLUSTERED,
21+
Table_Name sysname
22+
)
23+
DECLARE
24+
@SQL nvarchar(4000),
25+
@SQL_Drop nvarchar(4000),
26+
@ID int
27+
28+
BEGIN
29+
IF (@Object_Name IS NULL)
30+
SET @SQL = N'SELECT name FROM sys.synonyms WHERE base_object_name LIKE ''' + @Base_Object_Name_Like + ''''
31+
ELSE
32+
SET @SQL = N'SELECT ''' + @Object_Name + ''''
33+
END
34+
35+
DECLARE @TableName nvarchar(100)
36+
INSERT #Tables EXEC sp_executesql @SQL
37+
SELECT @ID = MAX(TableID) FROM #Tables
38+
WHILE @ID > 0 BEGIN
39+
40+
-- drop the existing SYNONYM
41+
SELECT @SQL = 'DROP SYNONYM ' + @Schema + '.' + tbl.Table_Name
42+
FROM
43+
#Tables tbl
44+
INNER JOIN sys.synonyms syn ON syn.name = tbl.Table_Name
45+
WHERE
46+
tbl.TableID = @ID
47+
IF EXISTS (SELECT * FROM #Tables tbl INNER JOIN sys.synonyms syn ON syn.name = tbl.Table_Name WHERE tbl.TableID = @ID) BEGIN
48+
EXEC sp_executesql @SQL
49+
END
50+
51+
--create synonyms here
52+
SELECT @SQL = 'CREATE SYNONYM [' + @Schema + '].' + Table_Name + ' FOR ' + @Database + '.dbo.' + Table_Name
53+
FROM
54+
#Tables
55+
WHERE
56+
TableID = @ID
57+
EXEC sp_executesql @SQL
58+
SELECT @TableName = Table_Name FROM #Tables WHERE TableID = @ID
59+
SELECT @SQL = 'GRANT ALL ON [' + @Schema + '].' + @TableName + ' TO db_exec'
60+
EXEC sp_executesql @SQL
61+
SET @ID = @ID - 1
62+
63+
END
64+
65+
66+
GO

0 commit comments

Comments
 (0)