Générer du code pour supprimer les clés étrangères

SELECT 'ALTER TABLE ' + kcu.CONSTRAINT_SCHEMA + '.' + kcu.TABLE_NAME + ' DROP CONSTRAINT ' + kcu.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc ON kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME

ou

SELECT 'ALTER TABLE ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']'
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'

Donner un privilège d'exécution à toutes les sp

Le but est d'attribuer les privilège d'execute sur toutes les procédures, à un rôle. En utilisant SSMS (même pour l'administration de SQL Server 2000), on peut en plus profiter de SQLCMD pour le faire sur la même base sur plusieurs serveurs, en utilisant :connect.

:connect servername -U login -P password
USE mydatabase
 
DECLARE @sql varchar(8000)
SET @sql = ''
 
SELECT @sql = @sql + 'GRANT EXEC ON [' + ROUTINE_SCHEMA + '].[' + SPECIFIC_NAME + '] TO myrole; '
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
 
EXEC (@sql)
GO

scripter les privilèges d'un objet

CREATE TABLE #grant (Owner sysname, Object sysname, Grantee sysname, Grantor sysname, ProtectType sysname, Action sysname, Col sysname)
 
INSERT INTO #grant
EXEC sp_helprotect 'dbo.myStoredProcedure'
 
SELECT 'GRANT ' + Action + ' ON ' + Object + ' TO ' + Grantee
FROM	#grant
DROP TABLE #grant
 
sql_server/snippets/administration/generation.txt · Dernière modification: 2007/10/13 09:44 (édition externe)