2015-01-14 21 views
10

Visual Studio 2013では、データベースプロジェクトを作成して既存のデータベースをインポートしました。最初はすべてうまくいっていて、プロジェクトはスクリプトを作成して作成しました。Visual Studioで正しいSQL構文が正しくないと思われる

しかし、Visual Studioでは、SQL構文エラーがあると思われ、複数のエラーSQL46010: Incorrect syntax near:が返されました。これらはVSによって生成されたコードからのものです - 私はそれを書いていません。

例1:

ALTER ROLE [db_owner] ADD MEMBER [SomeUser]; 
SQL46010: Incorrect syntax near ADD. 

例2:

DECLARE @Foo NVARCHAR(7) = 'abcdefg'; 
SQL46010: Incorrect syntax near =. 

私は/ SSMSにコードをコピー&ペーストした場合、すべてが正常に動作します。

残念ながら、これらはプロジェクトの作成を妨げるため、公開できません。エラーではなく、警告ではないので、プロジェクトの設定で無視するように設定することはできません。

問題ファイルの[ビルドアクション]を[なし]に設定できる回避策がありますが、公開時にこれらのファイルが必要です。

私が試してみました:新しいSQLファイルへ

  • 閉会を

    • の削除と同じコードを再追加
    • コピー/貼り付けコードをその溶液に
    • 閉会を再開し、ビジュアル再開Studio
    • Microsoft SQL Serverデータツール(SSDT)の更新
    • UpdatinグラムのVisual Studio

    私は見つけることができた最も近い問題は(SSDTを更新しようとする私を促した)バグSSDTのSQLパーサがあることを述べ、2012年からthis MSDN threadです。

  • 答えて

    21

    プロジェクトのプロパティにはTarget platformという名前の設定があり、VSに対してどのバージョンの構文をチェックするかをVSに指示します。

    これらは、T-SQL構文の比較的新しい追加です。構文がたとえばに設定されていると機能しない可能性があります。 SQL Server 2005の

    Visual Studio 2013 database project settings

    0

    旧スレッドが、これは私は、私は私の経験を共有したいと思った私をキャッチしたのは、ALTER ROLEのドキュメントは、いつ実際にのみ、それがSQL 2008でサポートされていることを示していると思われます機能の一部はロールの名前を変更するにはロールを使用してください。ALTER ROLE [ROLE NAME] WITH [NEW ROLE NAME] しかし、ロールからメンバーを追加または削除するには、旧式の(現在は非推奨の)ストアドプロシージャsp_addrolememberを使用する必要があります。つまり、sp_addrolemember 'Role Name', 'User Name'です。
    AaroninusはSQL 2012以降をターゲットにしていると指摘しているため、エラーとして報告されることはありません。

    0

    プロジェクトでフラグを設定しなければならないのは、私のC#クラスプロジェクト内でoracleとmssqlの両方でddl sqlスクリプトがあるためです。

    関連する問題