如果我在SSMS中运行以下内容,表将在不存在时创建。但是,在我的SQLCommand代码中,它连接并发送查询,但没有错误,但不会创建表(如果不存在)。有任何想法吗?SQL命令在SSMS中工作,而不是通过C#SqlCommand
string[] tables = new string[6];
tables[0] += ("IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[AD_Authorization]') AND type in (N'U')) " +
"CREATE TABLE [AD_Authorization]([ID] [bigint] IDENTITY(1,1) NOT NULL, " +
" [AD_Account] [varchar](255) NOT NULL, " +
" [AD_SID] [varchar](255) NOT NULL, " +
" [AD_EmailAddress] [varchar](255) NULL, " +
" [DateImported] [datetime] NOT NULL, " +
" [Active] [bit] NULL) ON [PRIMARY]");
for (int i = 0; i <= 5; i++)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(tables[i], connection))
{
connection.Open();
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
connection.Close();
}
}
}
是否可以下到您正在使用的用户通过代码与您在SSMS中登录的用户不同? 如果他们不同尝试连接作为你在你的项目中使用的同一用户,然后看... – 2011-12-29 16:41:40
另外:我总是会使用更精确和集中的'sys.tables'而不是'sys.objects'(和有以指定您感兴趣的对象的类型) - 'IF NOT EXISTS(SELECT * FROM sys.tables WHERE Name ='AD_Authorization')....' - 但我怀疑这会产生什么影响 – 2011-12-29 16:44:56
用full码。 – 2011-12-29 16:54:37