以编程方式创建dbo架构时出错

时间:2016-12-14 06:59:20

标签: c# sql-server ado.net

我正在尝试通过c#代码创建数据库,模式和表,到目前为止我已经成功创建了数据库但是收到错误 在创建架构时:

我正在尝试创建以下架构:

1) Person
2) Production
3) Sales
4) dbo

现在有些表的模式为Person,有些表的模式为dbo,因此在创建表时我希望这些表具有适当的模式。

enter image description here

创建人员,生产和销售架构时,我没有收到错误,但在为dbo创建架构时遇到错误

  

错误:指定的架构名称" dbo"要么不存在要么你做   没有权限使用它。由于之前的原因,修改了SCHEMA失败   错误。

代码: 这是我的代码:

 conn.Open();
 foreach (var item in schemaList)
                    {
                        sqlQuery = "CREATE SCHEMA " + schema;
                        using (SqlCommand cmd = new SqlCommand(sqlQuery, conn))
                    {
                         cmd.CommandTimeout = 0;
                         cmd.ExecuteNonQuery();
                    }
                    }
  conn.Close();

为什么这个权限问题不会出现在创建其他模式的情况下,以及为什么只在创建dbo模式时出现。

2 个答案:

答案 0 :(得分:2)

dbo架构默认情况下在数据库中创建,您无法重新创建它。使用以下命令获取所有模式的列表:

SELECT name FROM sys.schemas

或者

SELECT SCHEMA_NAME FROM
INFORMATION_SCHEMA.SCHEMATA

另外,如果可以的话,你的表名更像是我的专栏。您可能想重新考虑如何使用模式,表以及使用c#代码与SQL服务器通信的方式

答案 1 :(得分:1)

某些默认的内置架构是由sql servere创建的。 用户无法删除它们或创建这些架构。以下架构是内置的。

  1. dbo
  2. 客人
  3. SYS