CREATE XML SCHEMA COLLECTION无提示失败

时间:2018-03-16 00:58:13

标签: c# sql-server

我们有一个用于创建新数据库的系统,其中包括以下方法。

void CreateBaseObjects(DbConnection conn)
{
    var scripts = new ScriptManager();
    conn.Command(scripts.MainDbXmlSchemaScript).ExecuteNonQuery();
    conn.Command(scripts.MainDbSchemaScript).ExecuteNonQuery();
}

DBConnection包裹SqlConnection,但没有异常处理。调用此方法时,conn处于有效状态并连接到新创建的空数据库。

scripts.MainDbXmlSchemaScript是一个包含少量CREATE XML SCHEMA COLLECTION ...语句的SQL脚本。

scripts.MainDbSchemaScript是一个SQL脚本,它创建表及其关联对象,其中一些列具有引用第一个脚本创建的XML模式的列。

大部分时间(> = 99.9%)都可以正常运行。有时,当第二个脚本运行时,我们会收到一条带有消息的SqlException:

  

错误号6314:元数据中指定的集合不存在:'xmlFoo'

其中xmlFoo是第一个脚本中第一个XML Schema的名称,该脚本由第二个脚本中的CREATE TABLE语句引用。

我知道脚本是正确的,因为在一段时间后重试操作是成功的。

所以我的问题是:有没有办法让第一个脚本无法创建XML架构集合对象而不会向ExecuteNonQuery()方法返回错误?

请注意,此问题存在于多个不同服务器上,运行各种版本的SQL Server(至少2014年和2016年)。

0 个答案:

没有答案