Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation d'une variable dans une requête

3 réponses
Avatar
Michel Romieu
Bonjour,

Le script suivant :

DECLARE @Database CHAR (50)
SET @Database = 'Optima'

USE Master
GO
ALTER DATABASE @Database SET SINGLE_USER
GO
DBCC CHECKDB(@Database, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE @Database SET MULTI_USER
GO

génère les erreurs :

Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.
Serveur : Msg 137, Niveau 15, État 2, Ligne 1
La variable '@Database' doit être déclarée.
Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.

alors que :

USE Master
GO
ALTER DATABASE Optima SET SINGLE_USER
GO
DBCC CHECKDB('Optima', REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE Optima SET MULTI_USER
GO

passe sans problème !

L'erreur est probablement énorme mais je ne vois pas

Si quelqu'un peut m'aider

Merci d'avance

3 réponses

Avatar
bruno reiter [MVP]
l'instruction GO délimite un batch, donc le groupe d'instructions qui est
envoyé au serveur.
le declare est séparé des instructions qui utilisent la variable dans ton
cas

br

"Michel Romieu" wrote in message
news:
Bonjour,

Le script suivant :

DECLARE @Database CHAR (50)
SET @Database = 'Optima'

USE Master
GO
ALTER DATABASE @Database SET SINGLE_USER
GO
DBCC CHECKDB(@Database, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE @Database SET MULTI_USER
GO

génère les erreurs :

Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.
Serveur : Msg 137, Niveau 15, État 2, Ligne 1
La variable '@Database' doit être déclarée.
Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.

alors que :

USE Master
GO
ALTER DATABASE Optima SET SINGLE_USER
GO
DBCC CHECKDB('Optima', REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE Optima SET MULTI_USER
GO

passe sans problème !

L'erreur est probablement énorme mais je ne vois pas

Si quelqu'un peut m'aider

Merci d'avance



Avatar
Simon Clara
Pourquoi pas

DECLARE @Database CHAR (50)
SET @Database = 'Optima'

DECLARE @Requete CHAR (500)
SET @Requete 'USE Master
GO
ALTER DATABASE '+ @Database + 'SET SINGLE_USER
GO
DBCC CHECKDB( '+ @Database + ', REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE '+ @Database +' SET MULTI_USER
GO'

EXEC(@Requete)

?

Simon




"Michel Romieu" a écrit dans le message de
news:
Bonjour,

Le script suivant :

DECLARE @Database CHAR (50)
SET @Database = 'Optima'

USE Master
GO
ALTER DATABASE @Database SET SINGLE_USER
GO
DBCC CHECKDB(@Database, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE @Database SET MULTI_USER
GO

génère les erreurs :

Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.
Serveur : Msg 137, Niveau 15, État 2, Ligne 1
La variable '@Database' doit être déclarée.
Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.

alors que :

USE Master
GO
ALTER DATABASE Optima SET SINGLE_USER
GO
DBCC CHECKDB('Optima', REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE Optima SET MULTI_USER
GO

passe sans problème !

L'erreur est probablement énorme mais je ne vois pas

Si quelqu'un peut m'aider

Merci d'avance



Avatar
Michel Romieu
On Mon, 26 Apr 2004 08:45:54 +0200, "bruno reiter [MVP]"
wrote:

l'instruction GO délimite un batch, donc le groupe d'instructions qui est
envoyé au serveur.
le declare est séparé des instructions qui utilisent la variable dans ton
cas

br


Merci beaucoup

Toutefois, il me reste une erreur aprés avoir supprimé les GO
la ligne : ALTER DATABASE @Database SET SINGLE_USER
génère l'erreur : Ligne 4 : syntaxe incorrecte vers '@Database'.

Même un USE @Database ne passe pas !


Michel Romieu


"Michel Romieu" wrote in message
news:
Bonjour,

Le script suivant :

DECLARE @Database CHAR (50)
SET @Database = 'Optima'

USE Master
GO
ALTER DATABASE @Database SET SINGLE_USER
GO
DBCC CHECKDB(@Database, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE @Database SET MULTI_USER
GO

génère les erreurs :

Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.
Serveur : Msg 137, Niveau 15, État 2, Ligne 1
La variable '@Database' doit être déclarée.
Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '@Database'.

alors que :

USE Master
GO
ALTER DATABASE Optima SET SINGLE_USER
GO
DBCC CHECKDB('Optima', REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE Optima SET MULTI_USER
GO

passe sans problème !

L'erreur est probablement énorme mais je ne vois pas

Si quelqu'un peut m'aider

Merci d'avance