繁体   English   中英

以…开头的标识符太长。 最大长度为128

[英]The identifier that starts with … is too long. Maximum length is 128

我有个问题。 我尝试创建本地数据库的数据库备份。

当我在VS中启动程序时,一切都很好,因为到数据库的路径少于128个字符。 但是,当我发布并安装该应用程序时,路径的长度超过128个字符,并且出现该错误。

在Internet上,我找到了两种解决方案:

  1. 使用单引号
  2. 设置: SET QUOTED_IDENTIFIER OFFSET ANSI_NULLS ON

但无论我尝试哪种组合,都无法正确完成。

谁能告诉我如何正确处理?

我的代码:

internal void CreateDbBackup(string DbBackupPath)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

    SqlCommand GetDataFile = new SqlCommand();
    GetDataFile.Connection = con;
    GetDataFile.CommandText = "select physical_name from sys.database_files where type = 0";

    con.Open();
    string YourDataFile = (string)GetDataFile.ExecuteScalar();
    con.Close();

    SqlCommand cmd = con.CreateCommand();
    cmd.CommandText = string.Format(@"BACKUP DATABASE [" + YourDataFile + "] TO  DISK = N'{0}' WITH  INIT ,  NOUNLOAD ,  NOSKIP ,  STATS = 10,  NOFORMAT", DbBackupPath);

    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}

当您select physical_name from sys.database_files选择select physical_name from sys.database_files ,会得到一堆文件名。 对于语法BACKUP DATABASE要求,经过DATABASE ,而不是一个文件名,但一个数据库名称。

您的文件名包含路径,这会导致总路径太长而无法将其解释为数据库名称。 如果路径的长度较短,则会收到错误消息,即找不到该名称的数据库。 这将更直接地告诉您您在做什么错。

您应该已经从连接字符串中获得了数据库名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM