c# - 以编程方式创建 dbo 模式时出错

标签 c# sql-server ado.net

我正在尝试通过 C# 代码创建数据库、模式和表,到目前为止我已经成功创建了数据库但出现错误 在创建模式时:

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

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

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

enter image description here

我在创建Person,Production and sales 架构时没有出错但是我在为 dbo 创建架构时出错

Error:The specified schema name "dbo" either does not exist or you do not have permission to use it.CREATE SCHEMA failed due to previous errors.

代码: 这是我的代码:

 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 模式时出现。

最佳答案

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

SELECT name FROM sys.schemas

或者

SELECT SCHEMA_NAME FROM
INFORMATION_SCHEMA.SCHEMATA

另外,如果可以的话,您的表名对我来说更像是列。您可能想重新考虑如何使用模式、表以及您希望使用 C# 代码与 SQL 服务器通信的方式

关于c# - 以编程方式创建 dbo 模式时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41136587/

相关文章:

sql - 我必须在不使用函数或存储过程的情况下用 '&' 分隔值分割字符串?

sql - 使用来自多个列 SQL 的数据选择 MAX 日期

c# - 捕捉零行已更新

c# - 引用 Newtonsoft.Json.dll 时,在运行时在单声道下编译 C# 代码失败

c# - WPF CollectionViewSource 的组属性

c# - Silverlight 5 打开套接字访问被拒绝

c# - 我收到 COM 错误,我需要任何指导来解决这个问题

sql-server - SSDT - 在架构创建时指定授权用户

mysql - 数据库世界中的提供者和连接器有什么区别?

c# - DbArithmeticExpression 参数必须具有数字通用类型