簡體   English   中英

.NET,C#,SQL Server:帶有CREATE TABLE語句的無效對象名稱

[英].NET, C#, SQL Server: Invalid object name with CREATE TABLE statement

我正在嘗試執行一個CREATE TABLE,導致以下SQL異常:

無效的對象名稱“ UserLock”。

該語句如下所示:

USE [db]
GO

CREATE TABLE [db].[dbo].[UserLock] (
    [Login] [varchar](150) NOT NULL,
    [ExpirationDate] [datetime] NOT NULL,
    CONSTRAINT [PK_UserLock] PRIMARY KEY CLUSTERED
    ([Login] ASC)
    WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

奇怪的是,我可以用相同的用戶在Microsoft SQL Management Studio中成功運行查詢,但不能在用C#編寫的.NET Web應用程序中運行查詢。 我沒有使用任何框架,而是使用System.Data.SqlClient中提供的類連接到數據庫。 所有其他數據庫查詢均在該應用程序內運行。 該數據庫是Microsoft SQL Express 2005。

-編輯-

這是我的執行代碼如下所示:

    string createString = "CREATE TABLE [" + catalog + "].[dbo].[UserLock]("
                        + "  [Login] [varchar](150) NOT NULL,"
                        + "  [ExpirationDate] [datetime] NOT NULL,"
                        + "  CONSTRAINT [PK_UserLock] PRIMARY KEY CLUSTERED "
                        + "  ([Login] ASC)"
                        + "  WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]"
                        + ") ON [PRIMARY]";

    SqlCommand createCommand = connection.CreateCommand();
    createCommand.Connection = connection;
    createCommand.CommandText = createString;

    selectCommand.ExecuteNonQuery();

我用另一種方法捕獲異常。 SQL連接本身也可以通過其他方法進行設置。 這是標准的SqlConnection connection = new SqlConnection(connectionString);

我不確定您如何執行上述SQL,但要知道GO並不是SQL關鍵字,它是一個告訴SQL Management Studio執行當前批處理的命令。 IE,您不能在SQL Management Studio之外使用GO。 我也看不到如何使用GO會導致上述錯誤。 最好是發布失敗的整個c#代碼,因為該錯誤可能在其他地方。

您可以完全刪除以下代碼:

USE [db] GO

您已經使用[Database]。[Schema]。[ObjectName]完全限定了create table語句,因此無論如何它將在正確的數據庫和模式中創建表。

另外,您不應該在C#中使用GO ,因為它特定於SQL Mgmt Studio,並且用於分隔成批SQL語句。 如果您確實必須使用GO那么請看一下Sql Server管理對象類。

喬恩·加洛韋(Jon Galloway)有一篇不錯的博客文章

如果重命名表名? 那它有用嗎,可能是一個受保護的詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM