我的代码中出现错误

时间:2014-08-09 12:55:32

标签: sql c#-4.0 sql-server-express

我收到了错误

  

'附近的语法不正确。'。关键字'与'附近的语法不正确。如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号结束前一个语句。

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using System.IO;
using System.Configuration;
using System.Threading;

namespace Cloths_Inventory
{
    public partial class frmBackup : Form
    {
        //DataTable dtServers = SmoApplication.EnumAvailableSqlServers(true);
        //private static Server srvr;
        //private string DBpath = Application.StartupPath;

        public frmBackup()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bool bBackUpStatus = true;
            Cursor.Current = Cursors.WaitCursor;

            if (Directory.Exists(@"D:\SQLBackup"))
            {
                if (File.Exists(@"D:\SQLBackup\wcBackUp1.bak"))
                {
                    if (MessageBox.Show(@"Do you want to replace it?", "Back", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        File.Delete(@"D:\SQLBackup\wcBackUp1.bak");
                    }
                    else
                        bBackUpStatus = false;
                }
            }
            else
                Directory.CreateDirectory(@"D:\SQLBackup");

            if (bBackUpStatus)
            {
                //Connect to DB
                SqlConnection connect;
                string con = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Garment.mdf;Integrated Security=True;Asynchronous Processing= True ;User Instance=True";

                connect = new SqlConnection(con);
                connect.Open();

                //Execute SQL---------------
                SqlCommand command;
                command = new SqlCommand(@"backup database Garment.mdf to disk ='E:Garment.bak' with init,stats=10", connect);
                command.ExecuteNonQuery();
                //--------------

                connect.Close();

                MessageBox.Show("The support of the database was successfully performed", "Back", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您无法使用AttachDbFileName=方法,然后使用基于服务器的命令,例如backup database ....

如果要备份SQL Server数据库,则必须将其附加到服务器,并且需要连接到服务器并发出该命令:

// Connect to "master" database
string con = @"server=.\SQLEXPRESS;database=master;Integrated Security=True;";

SqlConnection connect = new SqlConnection(con);

SqlCommand ommand = new SqlCommand(@"backup database Garment to disk = N'E:\Garment.bak' with init,stats=10", connect);

connect.Open();
command.ExecuteNonQuery();
connect.Close();

答案 1 :(得分:0)

你错过了反斜杠E:Garment.bak应该是E:\ Garment.bak

command = new SqlCommand(@"backup database Garment.mdf to disk ='E:\Garment.bak' with init,stats=10", connect);