在SQL2000中,如何一次附加超过十六个文件的库?

解决方案 »

  1.   

    我的方法很笨.
    在目标服务器上运行一次建库/建表的脚本.
    然后,停止服务器,将文件覆盖目标服务器上的数据文件,然后,启动SQLSERVER.
      

  2.   

    靠,三点多亿的数据?够高雅的.在查询分析器中写:
    EXEC sp_attach_db @dbname = N'pubs', 
       @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
       @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
       ....
       @filenamen = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\文件名n'
       
      

  3.   

    --看帮助说好像刚好能用16个.sp_attach_db
    将数据库附加到服务器。语法
    sp_attach_db [ @dbname = ] 'dbname'
        , [ @filename1 = ] 'filename_n' [ ,...16 ]参数
    [@dbname =] 'dbname'要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n'数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。返回代码值
    0(成功)或 1(失败)
      

  4.   

    sp_attach_db================================只能小于等于十六个文件.多了不行.
    有一个方法,就是CREATE DATABASE 里加 FOR ATTACH 参数能附加16个以上的文件,我试了几次不成功.提示文件路径不对.我猜想是不是从这台机分离的,只能用这台机附加.可能因为是 msdb 里有相关的记录.所以,也想过修改 msdb 里的表来达到附加的目的,但找到.
      

  5.   

    CREATE DATABASE 库名
    ON(
    FILENAME = 'c:\file_1.mdf'),
    (
    FILENAME = 'c:\file_2.mdf'),
    .....
    (
    FILENAME = 'c:\file_n.mdf')FOR ATTACH
      

  6.   

    其实大家去看看 sp_attach_db 这个存储过程的内容就知道怎么解决了,也能知道为什么刚好有16个的限制
    直接调用 create database ... for attch 就没有限制了
      

  7.   

    FOR ATTACH指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 <filespec> 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,才需要使用 CREATE DATABASE FOR ATTACH。
      

  8.   

    需要注意的是, 2005中已经变成(有点搞笑)后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。,我们建议您改用 CREATE DATABASE database_name FOR ATTACH。
      

  9.   

    我记得sp_attach_db 的参数只需要主文件就行了,其他文件他会自己找的。