
Handy little bits. Have long-since forgotten where I got these little gems from.
Find a constraint by name
Select SysObjects.[Name] As [Constraint Name] , Tab.[Name] as [Table Name], Col.[Name] As [Column Name] From SysObjects Inner Join (Select [Name],[ID] From SysObjects) As Tab On Tab.[ID] = Sysobjects.[Parent_Obj] Inner Join sysconstraints On sysconstraints.Constid = Sysobjects.[ID] Inner Join SysColumns Col On Col.[ColID] = sysconstraints.[ColID] And Col.[ID] = Tab.[ID] where sysobjects.name = 'constraint name' order by [Tab].[Name]
Find foreign-key related tables
SELECT f.name AS ForeignKey, SCHEMA_NAME(f.SCHEMA_ID) SchemaName, OBJECT_NAME(f.parent_object_id) AS TableName, COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName, SCHEMA_NAME(o.SCHEMA_ID) ReferenceSchemaName, OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName FROM sys.foreign_keys AS f INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id where OBJECT_NAME(f.referenced_object_id) = 'table name' order by TableName, columnname
Shrink log files
Use master
declare @dbName varchar(100)
declare @recoveryModel varchar(100)
declare @sqlString varchar(100)
declare @dbId integer
declare @logFileName varchar(100)
declare dbcursor cursor for select name, recovery_model_desc from sys.databases where recovery_model_desc != 'SIMPLE'
open dbcursor
while 1=1
begin
fetch from dbcursor into @dbName, @recoveryModel
if @@FETCH_STATUS != 0 break
print @recoveryModel + ' ' + @dbname + ' setting recovery model to SIMPLE.'
SET @sqlString = 'ALTER DATABASE [' + @dbname + '] SET RECOVERY SIMPLE'
EXECUTE (@sqlString)
end
close dbcursor
deallocate dbcursor
declare dbcursor2 cursor for
select name, recovery_model_desc, database_id from sys.databases
where recovery_model_desc = 'SIMPLE'
open dbcursor2
while 1=1
begin
fetch from dbcursor2 into @dbName, @recoveryModel, @dbId
if @@FETCH_STATUS != 0 break
set @logFileName = (select name from sys.master_files where database_id = @dbId and type = 1)
print 'Shrinking log file ' + @logFileName + ' for database ' + @dbName
set @sqlString = 'USE ' + @dbName + '; ' + 'DBCC SHRINKFILE (' + @logFileName + ')'
execute (@sqlString)
end
close dbcursor2
deallocate dbcursor2