我不会形容自己害怕改变 - 但害怕新技术吗?确实是的!从操作系统到数据库服务器的技术似乎变得错误,效率低下且向后越来越远,它们的“进步”越远

MSDE 2000 (他们在当今世界中称为“ SQL 2000 Express”)

BACKUP [MyDatabase] TO FILE 'c:\backups\mybackup.backup'

SQL 2008 Express

等待!它是一个“用户实例” - 要备份它,我们需要将其连接到服务器实例
等待!要附加它,我们需要SQL Management Studio Express(78MB下载)
等待!当我们登录到我们的。 sqlexpress Server实例并尝试附加数据库时,它给我们一个错误,实际上看起来像是我们的Homebrew Dev项目中的一个错误:

标题:Microsoft SQL Server Management Studio

无法显示请求的对话框。

- - - - - - - - - - - - - - - 附加信息:

参数名称:NCOLINDEX实际值为-1。 (Microsoft.sqlserver.gridcontrol)

有人可以解释如何在T-SQL代码中备份SQL Server 2008 Express数据库的用户实例吗?

(对不起,如果这就像在Microsoft的Ummmm一样遇到的火焰 - 我实际上是他们的忠实粉丝。只是对这样的事情真的很生气!请不要投票给我...)

有帮助吗?

解决方案 2

尝试实现用户实例备份时要注意的一些关键技巧

a。)连接

您的连接字符串应该看起来像这样:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True;User Instance=True;Database=MyDatabaseAlias

这是 基本的 您的连接字符串使连接一个别名 Database=MyDatabaseAlias - 这个别名 无法重复 同时在同一台计算机上或您的连接可能失败。

b。)备份

如上所述,备份数据库的交易SQL在SQL MSDE/2000/2005/2008/R2上是相同的 别名!

BACKUP DATABASE MyDatabaseAlias TO DISK = 'c:\backups\mydatabase_20101117.backup'

真正令人惊奇的是,您可以得到的牛$ h!t错误,因为您的连接字符串没有别名 Database=MyDatabaseAlias 部分。

例如,无法打开物理文件'c: code myproject app_data mydatabase.mdatabase.mdf'操作系统错误32:“ 32(该过程无法访问该文件,因为它是由另一个过程使用的。)。备份数据库为异常终止。

C。) 还原

USE [master]; RESTORE DATABASE MyDatabaseAlias FROM DISK = 'c:\backups\mydatabase_20101117.backup'  WITH REPLACE

不要忘记 一切都必须 USE [master]; 在此语句的开头(并注意其 全部一行 对于那些从 DataContext 或类似),如果您这样做,它将无法覆盖现有数据库,因为您仍然可以连接到它。

再次,各种各样的 完全误导错误 由于连接字符串无效,您可能会在这里收到。

其他提示

嗯,如果是用户实例,那么最简单的备份策略是复制文件。 (虽然它未连接到SQL Server)。

如果您需要更全面的备份策略(例如交易备份),那么您确实应该查看一个更全面的数据库(例如,附加到完整SQL Server实例的“正常”)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top