<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Constraints &#8211; SQLpowered.com</title>
	<atom:link href="https://sqlpowered.com/script-category/constraints/feed/" rel="self" type="application/rss+xml" />
	<link>https://sqlpowered.com</link>
	<description>SQL Server + BI</description>
	<lastBuildDate>Mon, 14 Oct 2024 09:05:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://sqlpowered.com/wp-content/uploads/2020/07/FavIcon-e1594067873682-99x100.png</url>
	<title>Constraints &#8211; SQLpowered.com</title>
	<link>https://sqlpowered.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Verify all constraints WITH CHECK CHECK and report not trusted remaining</title>
		<link>https://sqlpowered.com/script/verify-all-constraints-with-check-check-and-report-not-trusted-remaining/</link>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Mon, 18 Sep 2023 07:34:01 +0000</pubDate>
				<guid isPermaLink="false">https://sqlpowered.com/?post_type=script&#038;p=5658</guid>

					<description><![CDATA[SET NOCOUNT ON DECLARE @FKS TABLE ([Name] NVARCHAR(300) NOT NULL PRIMARY KEY, [Stmt] NVARCHAR(MAX) NOT NULL) DECLARE @Name sysname DECLARE @Stmt NVARCHAR(MAX) DECLARE @Msg NVARCHAR(MAX) INSERT INTO @FKS ( [Name], [Stmt] ) SELECT SCHEMA_NAME([schema_id]) + '.' + [name], 'ALTER TABLE ['+ OBJECT_SCHEMA_NAME([parent_object_id]) + '].[' + OBJECT_NAME([parent_object_id]) + '] WITH CHECK...]]></description>
										<content:encoded><![CDATA[<pre class="EnlighterJSRAW" data-enlighter-language="sql">SET NOCOUNT ON 

DECLARE @FKS TABLE ([Name] NVARCHAR(300) NOT NULL PRIMARY KEY, [Stmt] NVARCHAR(MAX) NOT NULL)
DECLARE @Name sysname
DECLARE @Stmt NVARCHAR(MAX)
DECLARE @Msg NVARCHAR(MAX)

INSERT INTO @FKS
	( [Name], [Stmt] )
	SELECT 
		SCHEMA_NAME([schema_id]) + '.' + [name], 'ALTER TABLE ['+ OBJECT_SCHEMA_NAME([parent_object_id]) + '].[' + OBJECT_NAME([parent_object_id]) + '] WITH CHECK CHECK CONSTRAINT ' + QUOTENAME([name]) + ';'
	FROM [sys].[foreign_keys] 
	ORDER BY [name]

WHILE EXISTS (SELECT * FROM @FKS)
BEGIN
    
	SELECT TOP(1)
		@Name = [Name], @Stmt = [Stmt]
	FROM @FKS
	ORDER BY [Name]

	RAISERROR(@Name, 10, 1) WITH NOWAIT

	BEGIN TRY
		
		EXEC sp_executesql @Stmt
	
	END TRY
	BEGIN CATCH
	
		SET @Msg = ERROR_MESSAGE()
	    
		RAISERROR(@Msg, 16, 1)
	
	END CATCH

	DELETE FROM @FKS WHERE [Name] = @Name

END

SELECT * FROM [sys].[foreign_keys] WHERE [is_not_trusted] = 1
GO</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>List duplicated foreign key  relations</title>
		<link>https://sqlpowered.com/script/list-duplicated-foreign-key-relations/</link>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Mon, 14 Jan 2019 08:44:04 +0000</pubDate>
				<guid isPermaLink="false">https://sqlpowered.com/?post_type=script&#038;p=2883</guid>

					<description><![CDATA[;WITH [Basic] AS ( SELECT [fk].[parent_object_id], [fkc].[parent_column_id], [fk].[referenced_object_id], [fkc].[referenced_column_id], COUNT(*) [Cnt] FROM [sys].[foreign_keys] [fk] INNER JOIN [sys].[foreign_key_columns] [fkc] ON [fkc].[constraint_object_id] = [fk].[object_id] GROUP BY [fk].[parent_object_id], [fkc].[parent_column_id], [fk].[referenced_object_id], [fkc].[referenced_column_id] HAVING COUNT(*) &#62; 1 ), Dupl AS ( SELECT [fk].[name] [FKName], [s1].[name] [ParentSchema], [t1].[name] [ParentTable], [ParentColumn] = [c1].[name], [ReferencedTable] = [t2].[name], [ReferencedColumn]...]]></description>
										<content:encoded><![CDATA[<pre class="EnlighterJSRAW" data-enlighter-language="null">;WITH [Basic] AS ( SELECT [fk].[parent_object_id], [fkc].[parent_column_id], [fk].[referenced_object_id], [fkc].[referenced_column_id], COUNT(*) [Cnt] FROM [sys].[foreign_keys] [fk] INNER JOIN [sys].[foreign_key_columns] [fkc] ON [fkc].[constraint_object_id] = [fk].[object_id] GROUP BY [fk].[parent_object_id], [fkc].[parent_column_id], [fk].[referenced_object_id], [fkc].[referenced_column_id] HAVING COUNT(*) &gt; 1 ), Dupl AS ( SELECT [fk].[name] [FKName], [s1].[name] [ParentSchema], [t1].[name] [ParentTable], [ParentColumn] = [c1].[name], [ReferencedTable] = [t2].[name], [ReferencedColumn] = [c2].[name] FROM [sys].[foreign_keys] [fk] INNER JOIN [sys].[foreign_key_columns] [fkc] ON [fkc].[constraint_object_id] = [fk].[object_id] INNER JOIN [Basic] [f] ON [fk].[parent_object_id] = [f].[parent_object_id] AND [fk].[referenced_object_id] = [f].[referenced_object_id] AND [fkc].[parent_column_id] = [f].[parent_column_id] AND [fkc].[referenced_column_id] = [f].[referenced_column_id] INNER JOIN [sys].[tables] [t1] ON [f].[parent_object_id] = [t1].[object_id] INNER JOIN [sys].[columns] [c1] ON [f].[parent_object_id] = [c1].[object_id] AND [f].[parent_column_id] = [c1].[column_id] INNER JOIN [sys].[schemas] [s1] ON [t1].[schema_id] = [s1].[schema_id] INNER JOIN [sys].[tables] [t2] ON [f].[referenced_object_id] = [t2].[object_id] INNER JOIN [sys].[columns] [c2] ON [f].[referenced_object_id] = [c2].[object_id] AND [f].[referenced_column_id] = [c2].[column_id] ) SELECT [Dupl].[FKName], [Dupl].[ParentSchema], [Dupl].[ParentTable], [Dupl].[ParentColumn], [Dupl].[ReferencedTable], [Dupl].[ReferencedColumn], 'ALTER TABLE ' + [Dupl].[ParentSchema] + '.' + [Dupl].[ParentTable] + CHAR(13) + ' DROP CONSTRAINT ' + [Dupl].[FKName] [DropQuery] FROM [Dupl] GO</pre>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Drop all foreign keys in database</title>
		<link>https://sqlpowered.com/script/drop-all-foreign-keys-in-database/</link>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Fri, 09 Mar 2018 13:52:41 +0000</pubDate>
				<guid isPermaLink="false">https://sqlpowered.com/?post_type=script&#038;p=2387</guid>

					<description><![CDATA[DECLARE @Stmt NVARCHAR(MAX) = '' SELECT @Stmt = @Stmt + 'ALTER TABLE [' + SCHEMA_NAME(o.schema_id) + '].[' + o.NAME + '] DROP CONSTRAINT [' + fk.name + '];' FROM sys.[foreign_keys] fk INNER JOIN sys.[objects] o ON fk.[parent_object_id] = o.[object_id] EXECUTE(@Stmt) GO DECLARE @Stmt NVARCHAR(MAX) SET @Stmt = '' SELECT @Stmt...]]></description>
										<content:encoded><![CDATA[<pre class="EnlighterJSRAW" data-enlighter-language="sql">DECLARE @Stmt NVARCHAR(MAX) = ''

SELECT @Stmt = @Stmt + 'ALTER TABLE [' + SCHEMA_NAME(o.schema_id) + '].[' + o.NAME + '] DROP CONSTRAINT [' + fk.name + '];' 
FROM sys.[foreign_keys] fk 
INNER JOIN sys.[objects] o ON fk.[parent_object_id] = o.[object_id] EXECUTE(@Stmt) GO</pre>
<pre class="EnlighterJSRAW" data-enlighter-language="sql">DECLARE @Stmt NVARCHAR(MAX)

SET @Stmt = ''

SELECT @Stmt +=
	'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + ' ' +
	'DROP CONSTRAINT ' + QUOTENAME(name) + ';'
FROM sys.foreign_keys;

EXECUTE (@Stmt)
GO</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>List Untrusted Foreign Keys for all Databases</title>
		<link>https://sqlpowered.com/script/list-untrusted-foreign-keys-for-all-databases/</link>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Fri, 09 Mar 2018 11:57:48 +0000</pubDate>
				<guid isPermaLink="false">https://sqlpowered.com/?post_type=script&#038;p=2375</guid>

					<description><![CDATA[IF OBJECT_ID('tempdb..#UntrustedFK') IS NOT NULL DROP TABLE #UntrustedFK; GO CREATE TABLE [#UntrustedFK] ( [db_name] SYSNAME, [sch_name] SYSNAME, [ent_name] SYSNAME, [fk_name] SYSNAME ); EXECUTE [master].[sys].[sp_MSforeachdb] ' USE [?]; INSERT INTO #UntrustedFK SELECT ''?'' ,SCHEMA_NAME(fk.schema_id) AS [schema] ,[ob].[name] ,[fk].[name] FROM [sys].[foreign_keys] AS fk JOIN [sys].[objects] AS ob ON [fk].[parent_object_id] = [ob].[object_id] WHERE...]]></description>
										<content:encoded><![CDATA[<pre class="EnlighterJSRAW" data-enlighter-language="sql">IF OBJECT_ID('tempdb..#UntrustedFK') IS NOT NULL
	DROP TABLE #UntrustedFK;
GO

CREATE TABLE [#UntrustedFK] (
	[db_name] SYSNAME, [sch_name] SYSNAME, [ent_name] SYSNAME, [fk_name] SYSNAME
);

EXECUTE [master].[sys].[sp_MSforeachdb] 
'
	USE [?];

	INSERT INTO #UntrustedFK
	SELECT ''?''
	  ,SCHEMA_NAME(fk.schema_id) AS [schema]
	  ,[ob].[name]
	  ,[fk].[name]
	  FROM [sys].[foreign_keys] AS fk
	  JOIN [sys].[objects] AS ob
		ON [fk].[parent_object_id] = [ob].[object_id]
	  WHERE [fk].[is_not_trusted] = 1 and [fk].[is_disabled] = 0 and [fk].[is_not_for_replication] = 0;
'

SELECT * FROM [#UntrustedFK] ORDER BY db_name, sch_name, ent_name, fk_name
GO</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
