forked from tSQLt-org/tSQLt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestoutput.sql
More file actions
140 lines (121 loc) · 4.71 KB
/
testoutput.sql
File metadata and controls
140 lines (121 loc) · 4.71 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
DECLARE @cmd NVARCHAR(MAX);
SET @cmd='ALTER DATABASE ' + QUOTENAME(DB_NAME()) + ' SET TRUSTWORTHY ON;';
EXEC(@cmd);
GO
GO
CREATE PROCEDURE tSQLt.ResultSetFilter @ResultsetNo INT, @Command NVARCHAR(MAX)
AS
EXTERNAL NAME tSQLtCLR.[tSQLtCLR.StoredProcedures].ResultSetFilter;
GO
CREATE PROCEDURE tSQLt.AssertResultSetsHaveSameMetaData @expectedCommand NVARCHAR(MAX), @actualCommand NVARCHAR(MAX)
AS
EXTERNAL NAME tSQLtCLR.[tSQLtCLR.StoredProcedures].AssertResultSetsHaveSameMetaData;
GO
CREATE TYPE tSQLtPrivate EXTERNAL NAME tSQLtCLR.[tSQLtCLR.tSQLtPrivate];
GO
CREATE PROCEDURE tSQLt.NewConnection @command NVARCHAR(MAX)
AS
EXTERNAL NAME tSQLtCLR.[tSQLtCLR.StoredProcedures].NewConnection;
GO
CREATE PROCEDURE tSQLt.TableToText
@txt NVARCHAR(MAX) OUTPUT,
@TableName NVARCHAR(MAX),
@OrderBy NVARCHAR(MAX) = NULL
AS
BEGIN
SET @txt = tSQLtPrivate::TableToString(@TableName,@OrderBy);
END;
GO
CREATE TABLE tSQLt.CaptureOutputLog (
Id INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
OutputText NVARCHAR(MAX)
);
GO
CREATE PROCEDURE tSQLt.LogCapturedOutput @text NVARCHAR(MAX)
AS
BEGIN
INSERT INTO tSQLt.CaptureOutputLog (OutputText) VALUES (@text);
END;
GO
CREATE PROCEDURE tSQLt.CaptureOutput @command NVARCHAR(MAX)
AS
EXTERNAL NAME tSQLtCLR.[tSQLtCLR.StoredProcedures].CaptureOutput;
GO
CREATE PROCEDURE tSQLt.SuppressOutput @command NVARCHAR(MAX)
AS
EXTERNAL NAME tSQLtCLR.[tSQLtCLR.StoredProcedures].SuppressOutput;
GO
----------------------------------------------------------------
---- Below objects need to go back into tSQLt.class.sql ----
----------------------------------------------------------------
CREATE FUNCTION tSQLt.Private_GetForeignKeyDefinition(
@SchemaName NVARCHAR(MAX),
@ParentTableName NVARCHAR(MAX),
@ForeignKeyName NVARCHAR(MAX)
)
RETURNS TABLE
AS
RETURN SELECT 'CONSTRAINT ' + name + ' FOREIGN KEY (' +
parCol + ') REFERENCES ' + refName + '(' + refCol + ')' cmd,
CASE
WHEN RefTableIsFakedInd = 1
THEN 'CREATE UNIQUE INDEX ' + tSQLtPrivate::CreateUniqueObjectName() + ' ON ' + refName + '(' + refCol + ');'
ELSE ''
END CreIdxCmd
FROM (SELECT QUOTENAME(SCHEMA_NAME(k.schema_id)) AS SchemaName,
QUOTENAME(k.name) AS name,
QUOTENAME(OBJECT_NAME(k.parent_object_id)) AS parName,
QUOTENAME(SCHEMA_NAME(refTab.schema_id)) + '.' + QUOTENAME(refTab.name) AS refName,
QUOTENAME(parCol.name) AS parCol,
QUOTENAME(refCol.name) AS refCol,
CASE WHEN e.name IS NULL THEN 0
ELSE 1
END AS RefTableIsFakedInd
FROM sys.foreign_keys k
JOIN sys.foreign_key_columns c
ON k.object_id = c.constraint_object_id
JOIN sys.columns parCol
ON parCol.object_id = c.parent_object_id
AND parCol.column_id = c.parent_column_id
JOIN sys.columns refCol
ON refCol.object_id = c.referenced_object_id
AND refCol.column_id = c.referenced_column_id
LEFT JOIN sys.extended_properties e
ON e.name = 'tSQLt.FakeTable_OrgTableName'
AND e.value = OBJECT_NAME(c.referenced_object_id)
JOIN sys.tables refTab
ON COALESCE(e.major_id,refCol.object_id) = refTab.object_id
WHERE k.parent_object_id = OBJECT_ID(@SchemaName + '.' + @ParentTableName)
AND k.object_id = OBJECT_ID(@SchemaName + '.' + @ForeignKeyName)
)x;
GO
CREATE PROCEDURE tSQLt.Private_RenameObjectToUniqueName
@SchemaName NVARCHAR(MAX),
@ObjectName NVARCHAR(MAX),
@NewName NVARCHAR(MAX) = NULL OUTPUT
AS
BEGIN
SET @NewName=tSQLtPrivate::CreateUniqueObjectName();
DECLARE @RenameCmd NVARCHAR(MAX);
SET @RenameCmd = 'EXEC sp_rename ''' +
@SchemaName + '.' + @ObjectName + ''', ''' +
@NewName + ''';';
EXEC tSQLt.SuppressOutput @RenameCmd;
END;
GO
CREATE PROCEDURE tSQLt.Private_RenameObjectToUniqueNameUsingObjectId
@ObjectId INT,
@NewName NVARCHAR(MAX) = NULL OUTPUT
AS
BEGIN
DECLARE @SchemaName NVARCHAR(MAX);
DECLARE @ObjectName NVARCHAR(MAX);
SELECT @SchemaName = QUOTENAME(OBJECT_SCHEMA_NAME(@ObjectId)), @ObjectName = QUOTENAME(OBJECT_NAME(@ObjectId));
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName,@ObjectName, @NewName OUTPUT;
END;
GO
GO