2015-04-04 200 views
-2

我使用下面的代码从c#.net中的数据库创建备份。但是当我运行代码我得到这个错误:ServerConnection不适用于连接字符串

未能连接到服务器数据源= .;初始目录= AngularJs;集成安全=真。

我的代码来做到这一点:

ServerConnection con = new ServerConnection("Data Source=" + txtServerName.Text + ";Initial Catalog=" + drpDatabases.SelectedItem.ToString() + ";Integrated Security=True"); 
     Server server = new Server(con); 
     Backup source = new Backup(); 
     source.Action = BackupActionType.Database; 
     source.Database = drpDatabases.SelectedItem.ToString(); 
     BackupDeviceItem destination = new BackupDeviceItem(Path, DeviceType.File); 
     source.Devices.Add(destination); 
     source.SqlBackup(server); 
     con.Disconnect(); 

在哪里的问题?为什么这不起作用? 我用sqlconnection测试了连接字符串,它的工作正常并且打开得很好。

+1

我的猜测是txtServerName.Text中填充了一个“。”并正在查找服务器名称。 – Bob 2015-04-04 17:55:23

+0

是文本服务器=。 ;这是错的吗? – 2015-04-04 17:57:59

+0

我通常会看到Data Source = ServerName – Bob 2015-04-04 17:59:07

回答

0

你的代码是错误的,使用方法:

ServerConnection con = new ServerConnection(
    new SqlConnection(
     "Data Source=" + txtServerName.Text + ";Initial Catalog=" 
     + drpDatabases.SelectedItem.ToString() 
     + ";Integrated Security=True")); 
+0

您应该解释[ServerConnection(String)](https://msdn.microsoft.com/en-us/library/ms191560.aspx)需要实例名称,而不是连接字符串。 OP还可以写入'新的ServerConnection(txtServerName.Text)'。 – 2015-04-06 09:38:56

0

ServerConnection(string)超载期待一个实例名称,而不是一个连接字符串。你可以简单地写new ServerConnection(".")或:

var con = new ServerConnection(txtServerName.Text); 

错误消息告诉你,ServerConnection试图连接到具有名称相同整个连接字符串来连接服务器和失败。

ServerConnection表示与特定服务器的连接,而不是数据库,因此它不需要SqlConnection对象。如果您提供一个,它仅用于提取相关信息。

0

试试这个:

SqlConnection con = new SqlConnection("Data Source=" + txtServerName.Text + ";Initial Catalog=" + drpDatabases.SelectedItem.ToString() + ";Integrated Security=True"); 
SeverConnection scon = new ServerConnection(con); 
Server svr = new Server(scon); 

,因为我认为你传递不正确的参数为一个ServerConnection。