Visual Studio pense que la syntaxe SQL correcte est incorrecte
Dans Visual Studio 2013, j'ai créé un projet de base de données et importé une base de données existante. Au début, tout était très bien, et le projet de construction et de produit à créer des scripts.
Cependant, maintenant, Visual Studio semble penser qu'il y a de SQL erreurs de syntaxe, de revenir plusieurs SQL46010: Incorrect syntax near:
erreurs. Ce sont tous de code généré par CONTRE je n'ai pas écrit tout ça.
Exemple 1:
ALTER ROLE [db_owner] ADD MEMBER [SomeUser];
SQL46010: Incorrect syntax near ADD.
Exemple 2:
DECLARE @Foo NVARCHAR(7) = 'abcdefg';
SQL46010: Incorrect syntax near =.
Si je l'ai copier/coller le code dans SSMS, tout fonctionne bien.
Malheureusement, ceux-ci empêchent le projet de l'édifice, ce qui signifie que je ne peux pas publier. Puisqu'ils sont des erreurs, pas de mises en garde, je ne peux pas les mettre pour être ignoré dans les paramètres du projet.
Une solution de contournement existe où je peux régler le problème des fichiers Build Action Aucune, mais j'ai besoin de ces fichiers inclus lorsque je publie.
J'ai essayé:
- Suppression et re-ajout du même code
- Copier/coller du code à nouveau fichier SQL
- De la fermeture et de la réouverture de la solution
- La fermeture et la réouverture de Visual Studio
- Mise à jour de Microsoft Outils de Données SQL Server (SSDT)
- Mise À Jour De Visual Studio
Le plus proche du problème que j'ai pu trouver cette MSDN fil à partir de 2012, indiquant qu'il y a un bug SSDT analyseur SQL (qui m'a incité à essayer de mettre à jour SSDT).
source d'informationauteur Aaroninus
Vous devez vous connecter pour publier un commentaire.
Il y a un paramètre dans les propriétés du projet appelé
Target platform
qui raconte VS quelle version de SQL Server pour vérifier la syntaxe de la contre.Qui sont relativement nouveaux ajouts à la syntaxe de T-SQL, et ils pourraient ne pas fonctionner si la syntaxe est définie, par exemple SQL Server 2005.
Vieux thread mais cela ne m'attraper, donc je pensais que je voudrais partager mon expérience, la documentation de MODIFIER le RÔLE, ce qui semble indiquer qu'il est pris en charge sur SQL 2008 alors qu'en fait, seule une partie de la fonctionnalité. Vous peut utilisez Alter Rôle pour modifier le nom d'un Rôle c
ALTER ROLE [ROLE NAME] WITH [NEW ROLE NAME]
Mais pour ajouter ou supprimer des membres dans le rôle, il est nécessaire d'utiliser l'ancien (et maintenant obsolète) procédure stockée sp_addrolememeber c'est à dire
sp_addrolemember 'Role Name', 'User Name'
.Comme Aaroninus points si vous cible SQL 2012 ou plus tard, ce ne sera pas un rapport comme une erreur.
avoir à définir un indicateur dans le projet est vraiment stupide car j'ai ddl scripts sql dans oracle et mssql à l'intérieur de mon c# projet de classe.