Question de débutant

Le
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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
OokieDookie
Le #11719711
L'erreur se produit à cause des GO.
Je ne suis pas un grand spécialiste, mais je dirais qu'a
priori dès qu'on utilise un GO il faut redéclarer les
variables.

HTH,


-----Message d'origine-----
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

.



Fred BROUARD
Le #11719631
Le GO n'est pas une instruction. C'est un ordre de séparation de fichier
batch à destination de l'outil de lecture des fichiers d'ordre et non de
SQL Server.

C'est comme si tu lançait 4 fichiers distincts y compris en parallèle.

A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html#2.7


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Michel Romieu a écrit:
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



Publicité
Poster une réponse
Anonyme