使用存储过程备份数据库时C#Linq-to-sql错误

时间:2014-09-21 06:40:06

标签: c# sql-server linq-to-sql

我正在使用针对SQL Server 2008数据库文件的C#和Linq-to-SQL应用程序。我的数据库不在SQL Server中,而是在我的项目文件夹中。

我的连接字符串是

<add name="WindowsFormsApplication1.Properties.Settings.OpticaConnectionString"
        connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|  \Optica.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        providerName="System.Data.SqlClient" />

我使用Windows身份验证从C#访问SQL Server,每次运行应用程序时.mdf文件都会复制到输出文件夹。

我有一个备份数据库的存储过程。在SQL Server中执行该过程成功完成,但是当我尝试从C#调用此过程时,会发生以下错误

  

数据库&#39; optica.mdf&#39;不存在。确保正确输入名称。 BACKUP DATABASE异常终止。

尽管数据库名称optica.mdf甚至不是该过程的参数。

我发现了一个类似的主题,但它讨论了从C#linq立即执行SQL代码,这不是我的情况。

这是我的存储过程

USE [OPTICA.MDF]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER proc [dbo].[Sp_OpticaDatabaseBackup]
    @Path varchar(1024),
as
Begin       
    DECLARE @fileName VARCHAR(256) -- file name for backup
    DECLARE @fileDate VARCHAR(20) -- used for file name 

    SELECT @fileDate = replace(CONVERT(VARCHAR(20),GETDATE(),126),':','-')

    SET @fileName = @Path + 'Pts_' + @fileDate + '.BAK' 

    BACKUP DATABASE [optica.mdf] TO DISK = @fileName
End

这是C#linq调用代码段     public int backupDatabase(string path)             {                 int res = -1;                 DataClasses1DataContext dc = new DataClasses1DataContext();                 尝试                 {                     dc.Sp_OpticaDatabaseBackup(路径);                     res = 1;
                }                 catch(Exception ex)                 {

            }
            return res;
        }

这里是异常发生的地方

[Function(Name="dbo.Sp_OpticaDatabaseBackup")]
        public int Sp_OpticaDatabaseBackup([Parameter(Name="Path",   DbType="VarChar(1024)")] string path, [Parameter(Name="DB", DbType="VarChar(1024)")] string dB)
    {
        IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), path, dB);
        return ((int)(result.ReturnValue));
    }

有什么想法吗?

提前致谢。

0 个答案:

没有答案