我正在尝试使用vb。
中的文件管理概念复制数据库文件我的代码是:
IO.File.Copy(MukilCommon.APP_PATH & "\" & CurrentDbName & ".mdf", MukilCommon.APP_PATH & "\" & CurrentDbName & "_" & yearStr & ".mdf")
IO.File.Copy(MukilCommon.APP_PATH & "\" & CurrentDbName & ".ldf", MukilCommon.APP_PATH & "\" & CurrentDbName & "_" & yearStr & ".ldf")
我的代码从e:
上的新数据库复制了一个数据库,如下所示:
sample.mdf
sample.ldf
sample_2016.mdf
sample_2016.ldf
我使用此代码将我复制的数据库附加到SQL Server中。
db1.Execute("EXEC sp_attach_db @dbname = '" & CurrentDbName & "_" & yearStr & "', @filename1 = '" & MukilCommon.APP_PATH & "\" & CurrentDbName & "_" & yearStr & ".mdf', @filename2 = '" & MukilCommon.APP_PATH & "\" & CurrentDbName & "_" & yearStr & ".ldf'")
但是我收到了这条消息。
无法附加文件名,"示例"数据库已存在于SQL Server中。
实际上复制的文件已尝试附加在原始数据库上。如何附加此数据库?
答案 0 :(得分:0)
据我所知,您拥有分离数据库的数据和日志文件,并且您希望将此数据库附加到SQL Server实例上。
从错误中,我了解到SQL Server实例上已经有一个名为“sample”的数据库
因此,如果要附加新数据库,可以选择要附加的数据库的新名称。也许你可以称之为sample2
由于您已经尝试分离,我猜测您的数据文件位于一个单独的文件夹中,而不是现有的示例数据库文件存在 您可以将这些文件保存在单独的文件夹中,这样就可以为示例数据库和sample2数据库使用相同的文件名称,例如TestDB.mdf
然后你可以像
那样执行你的代码named_struct
答案 1 :(得分:0)
我的建议: 将文件放在不同的文件夹中,你必须保留同名的mdf和ldf文件,使用这个脚本:
USE [master]
GO
CREATE DATABASE [Simple_2017] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\2017\Simple.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\2017\Simple_log.ldf' )
FOR ATTACH
GO
请勿使用sp_attach_db