Cette publication vous montrera quelques astuces de script sur MS SQL Server.
1. Attendez
L'instruction WAITFOR est spécifiée avec l'une des deux clauses suivantes :
(1) Le mot-clé DELAY suivi d'un délai à passer avant de terminer l'instruction WAITFOR. Le temps d'attente avant de compléter la déclaration WAITFOR peut aller jusqu'à 24 heures. Par exemple,
-- Attendez dix secondes avant d'effectuer une instruction select
RETARD D'ATTENTE '00:00:10'
Sélectionnez EmployeeID dans Northwind.dbo.Employees
(2) Le mot clé TIME suivi d'une heure d'exécution, qui spécifie l'achèvement de l'instruction WAITFOR.
Par exemple,
-- Attendez jusqu'à 22h00 pour effectuer une vérification de la base de données des pubs afin de vous assurer que toutes les pages sont correctement allouées et utilisées.
Utiliser les pubs
COMMENCER
HEURE D'ATTENTE '22:00'
DBCC CHECKALLOC
FIN
2. Activer le débogage SQL
-- La procédure stockée SP_SDIDEBUG est utilisée par SQL Server pour déboguer les instructions Transact-SQL
Utiliser le maître
Accordez Execute sur SP_SDIDEBUG au nom d'utilisateur
3. Exécutez une chaîne construite dynamiquement
(1) Instruction EXECUTE
Avec l'instruction EXECUTE, toutes les valeurs de paramètres doivent être converties en caractères ou Unicode et intégrées à la chaîne Transact-SQL. Par exemple,
DÉCLARER @IntVariable INT
DÉCLARE @SQLString NVARCHAR(500)
/* Construit et exécute une chaîne avec une valeur de paramètre. */
FIXER @IntVariable = 35
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST (@IntVariable AS NVARCHAR (10))
EXEC (@SQLString)
/* Construit et exécute une chaîne avec une deuxième valeur de paramètre. */
FIXER @IntVariable = 201
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST (@IntVariable AS NVARCHAR (10))
EXEC (@SQLString)
(2) SP_ExecuteSQL
Il est recommandé d'utiliser sp_executesql plutôt que l'instruction EXECUTE pour exécuter une chaîne. Non seulement la prise en charge de la substitution de paramètres rend sp_executesql plus polyvalent que EXECUTE, mais elle rend également sp_executesql plus efficace car il génère des plans d'exécution plus susceptibles d'être réutilisés par SQL Server.
sp_executesql prend en charge la définition des valeurs de paramètres séparément de la chaîne Transact-SQL :
DECLARE @IntVariable INT
DÉCLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
/* Construit la chaîne SQL une fois. */
FIXER @SQLString =
N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
/* Spécifie le format du paramètre une fois. */
SET @ParmDefinition = N'@level tinyint'
/* Exécute la chaîne avec la première valeur du paramètre. */
FIXER @IntVariable = 35
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
/* Exécute la même chaîne avec la deuxième valeur du paramètre. */
FIXER @IntVariable = 32
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
4. SP_HelpText
Imprime le texte d'une règle, d'une valeur par défaut ou d'une procédure stockée non chiffrée, d'une fonction définie par l'utilisateur, d'un déclencheur ou d'une vue.
-- Cet exemple affiche le texte du déclencheur employe_insupd, qui se trouve dans la base de données pubs
Utiliser les publications
Exécutif sp_helptext 'employee_insupd'