SqlServer

SQL Server : Astuces et requêtes pratiques...

Liens

Obtenir la description des champs d'une table

Afin de générer la documentation d'une base de données, il est souvent utile de copier rapidement le nom des champs composants une table.

Ci-joint une petit requête très efficace trouvée ici ...

Select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'yourTable'

Pour toutes les tables utilisateur cela revient à :

Select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME in
(
	select name from sysobjects
	where type='U'
)
order by TABLE_NAME

Compter le nombre d'enregistrement de toutes les tables

Trouvée sur cette page, cette commande est très pratique pour avoir le nombre total d'enregistrement pour toutes les tables de la base de données.

declare @table_name sysname
declare @num_recs int
declare @count_sql as nvarchar(250)
declare @total_recs int

declare table_cursor CURSOR for 
	select name from sysobjects 
	where type='U'
	order by name

set @total_recs = 0

open table_cursor
fetch next from table_cursor into @table_name
while @@FETCH_STATUS=0
begin
  set @count_sql = 'select @num_recs = count(*) from [' + @table_name + ']'
  exec sp_executesql @count_sql,N'@num_recs int output',@num_recs output
  print @table_name + ' : ' + cast(@num_recs as varchar)
  set @total_recs = @total_recs + @num_recs
  fetch next from table_cursor into @table_name
end
close table_cursor
deallocate table_cursor

print 'Total number of records : ' + cast(@total_recs as varchar)

Lister les lots DTS d'un serveur

Selon ce lien , c'est aussi simple que ça...

/* List Server Packages */
SELECT DISTINCT name FROM msdb.dbo.sysdtspackages

Les autres colonnes de cette table qui peuvent aider sont : name, description, id, versionid, description

Exemple (pour une vue)

SELECT TOP 100 PERCENT name AS NOM, MAX(createdate) AS DATE_CREATION
FROM  msdb.dbo.sysdtspackages
GROUP BY name
ORDER BY name

Lister les bases d'un serveur

SELECT TOP 100 PERCENT name, dbid
FROM   master.dbo.sysdatabases sysdatabases_1
WHERE  (dbid > 4)
ORDER BY name

Liste les vues d'une base de données

 SELECT * FROM DBO.SYSOBJECTS
 WHERE XTYPE='V'
 AND CATEGORY = 0 -- exclut les vues système
 ORDER BY NAME

Erreur : Cannot resolve collation conflict for equal to operation.

Exemple :

SELECT ID
FROM ItemsTable
INNER JOIN AccountsTable
WHERE ItemsTable.Collation1Col = AccountsTable.Collation2Col

En cas d'erreur, il faut corriger comme suit :

SELECT ID
FROM ItemsTable
INNER JOIN AccountsTable
WHERE ItemsTable.Collation1Col COLLATE DATABASE_DEFAULT
= AccountsTable.Collation2Col COLLATE DATABASE_DEFAULT

Source >>