SQL Server数据库批量附加
原理
通过OSQL
命令进行数据库实体的批量附加
OSQL:osql 工具是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件。osql 工具使用 ODBC 数据库应用程序编程接口 (API) 与服务器通讯。
通过DIR
命令列出的所有的数据库实体
DIR:dir命令存在于[Debian GNU/Linux](https://baike.baidu.com/item/Debian GNU%2FLinux/2963314)、AmigaDOS [1] 、TRS-DOS、RT-11、OpenVMS、TOPS-10、OS/8、CP/M系统、GEMDOS、MS-DOS、PC-DOS、DR-DOS、FreeDOS、Singularity、OS/2、Windows、ReactOS、RDOS/DOS等操作系统中。
大多数操作系统(包括DOS及Windows)中dir命令基本上会列出目录中的文件及子目录的名称,也可以列出其文件大小,创建时间等相关信息,并且列出所在的磁盘、可用空间等信息。dir命令也可以寻找其文件名称符合特定条件的文件。
提取数据库实体列表
代码
@echo off
color 0a
title 打印文件名
mode con lines=30 cols=60
dir /b /s > 文件夹及文件名.xls
参数
/s: (subdirectories)
列出指定目录和所有子目录中的文件。
/b: (bare list)
裸列表,意思是只有文件名。
方法
- 新建一个文件:
文件夹及文件名.bat
,使用文本编辑器打开,将上面的代码拷贝到文件里面,保存文件,文件编码方式以ANSI
编码。
- 将该文件放到数据库实体所在路径下,双击执行,会在目录下生成一个文件名为
文件夹及文件名.xls
的表格文件。
- 打开生成的表格文件,出现格式提示,点是即可
- 打开的文件内为目录下的所有文件路径,通过excel的分列分离文件路径与文件名
- 选择固定宽度,下一步
- 通过页面的提示将分列线置于路径与文件名之间的位置,下一步
- 将分列出来的两列数据格式调整成文本格式,点击完成
- 删除不需要的行数据
编辑批量附加代码
代码
OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "sp_attach_db '库名','路径\数据文件名','路径\日志文件名'"
参数
[-U 登录 ID] [-P 密码] [-S 服务器] [-Q "sp_attach_db" 附加数据库并退出]
- 对刚刚处理的EXCEL表格的B列进行分列,分成文件名与后缀名两列,以分隔符号方式,下一步
- 按
.
进行分列,数据预览与下图一致,下一步
- 将数据格式设置成文本,完成
- 新建工作表,通过筛选将数据库名拷贝到新工作表
- 在表格D列通过
CONCATENATE
函数将文件名和后缀名合并,并在中间加上.
,转换为值状态,之后删除文件名和后缀名列,
- 通过筛选,将数据库文件和日志文件区分开,并复制到刚刚新建的新工作表,并将路径复制到新工作表。
新工作表内容:
- 将代码
OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "sp_attach_db
复制到新工作表,并修改参数(用户名,密码,服务器),然后复制填充。
- 通过
CONCATENATE
函数按代码模板合并代码,注意符号,尾部通过#
代替后面的'"
(因为"
在函数种无法添加)
- 新建一个文本文档,将生成的代码拷贝到新建的文本文件中,并通过查找替换将
#
替换为'"
,并另存为.bat
文件,文件编码方式以ANSI
编码。
运行代码,进行附加
报错提示
- 数据库已存在,可不用处理
- 拒绝访问
解决办法:给库文件加上
Everyone
权限,并完全控制
因数据库量较大,可通过软件批量设置
转载请注明原文链接:https://www.cnblogs.com/loaferwp/articles/15618845.html
购买财务,ERP,OA软件可联系我: loaferWP 。微信同号:13615609463