C# SqlServer 数据库连接字符串 正确边接方式 数据库自动备份代码

标准的 SQL Server 用户名密码连接字符串

string connectionString = @"Data Source=服务器地址;Initial Catalog=数据库名;User ID=用户名;Password=密码;";

示例(本地数据库实例)

string connectionString = @"Data Source=localhost\SQLEXPRESS;Initial Catalog=test;User ID=zyy;Password=Fh***345;";

如果加上Integrated Security=True",这时User Id=zyy;Password=Fh***345;就失效了,不起作用。

connectionString = @"Data Source=localhost\SQLEXPRESS;Initial Catalog=Test;User Id=zyy;Password=Fh***345;Integrated Security=True";

Integrated Security=True 强制使用Windows 身份验证,此时 User Id 和 Password 会被忽略。

connectionString = @"Data Source=localhost\SQLEXPRESS;Initial Catalog=Test;User Id=zyy;Password=Fh***345;";

如果用了用户名User Id和密码password来连接数据库,一定要为用户设置好权限。

数据库自动备份代码,用户一定要有数据库的 db_owner 成员角色。不然会报错,不能备份成功,“在数据库 'test' 中拒绝了 BACKUP DATABASE 权限。BACKUP DATABASE 正在异常终止。”

///

/// 备份数据库

///

/// 要备份的数据库名称

/// 备份文件保存路径

/// 备份文件名称前缀

/// 是否备份成功

public void BackupDatabase(string databaseName, string backupPath, string fileNamePrefix = "")

{

// 检查备份目录是否存在,不存在则创建

if (!Directory.Exists(backupPath))

{

Directory.CreateDirectory(backupPath);

}

// 生成备份文件名,包含时间戳以防重名

string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");

string fileName = string.IsNullOrEmpty(fileNamePrefix)

? $"{databaseName}_Backup_{timestamp}.bak"

: $"{fileNamePrefix}_{databaseName}_Backup_{timestamp}.bak";

string fullBackupPath = Path.Combine(backupPath, fileName);

// 构建备份SQL命令

string backupCommand = $@"

BACKUP DATABASE [{databaseName}]

TO DISK = N'{fullBackupPath}'

WITH NOFORMAT, NOINIT,

NAME = N'{databaseName} - 完整备份',

SKIP, NOREWIND, NOUNLOAD, STATS = 10";

// 执行备份命令

using (SqlConnection connection = new SqlConnection(_connectionString))

{

connection.Open();

using (SqlCommand command = new SqlCommand(backupCommand, connection))

{

command.CommandTimeout = 3600; // 设置超时时间为1小时,根据需要调整

command.ExecuteNonQuery();

}

}

}

// 获取SQL Server所有用户数据库

public List GetUserDatabases()

{

List userDatabases = new List();

// SQL查询:排除系统数据库

string query = @"

SELECT name

FROM sys.databases

WHERE database_id > 4 -- 系统数据库的ID是1-4

AND state = 0"; // 数据库处于在线状态

using (SqlConnection connection = new SqlConnection(_connectionString))

{

connection.Open();

using (SqlCommand command = new SqlCommand(query, connection))

{

using (SqlDataReader reader = command.ExecuteReader())

{

while (reader.Read())

{

string databaseName = reader["name"].ToString();

userDatabases.Add(databaseName);

}

}

}

}

return userDatabases;

}

文件名精灵2025年最新版 机器翻译 AI智能
...
批量修改文件名称、文件夹名称

免费使用 功能无限制

全面接入机器自动翻译功能,主流AI大模型智能改名

方便快捷,支持正则表达式、无需安装功能齐全、支持定制无广告、无插件,放心使用。

免费下载
本站中所有的计算器的计算结果仅供参考,本站对此结果的准确性不承担任何责任,实际数额以银行/保险公司/国家相关机构确认的结果为准。
在线客服QQ:543690914,备案号: 苏ICP备15037649号-27。东海县白塔埠镇佳诚电脑经营部版权所有。