SQLCMD的介绍
原文:SQLCMD的介绍
sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -i filename.sql
下面的内容是详细介绍sqlcmd的,有兴趣的朋友可以看看
因为公司的业务需要,所以采集了一个2W多条的数据,都是insert语句,生成一个200多M的数据,谁料在通过sql server 2005不能直接打开,导入也存在问题,用记事本也打不开,复制贴也不行,最后还是一同学提了个醒用命令在dos下执行.sql文件,才有了办法,同时也 在一热心网友的帮助下完成了这个让我头疼半天的活,下面我对这些做一下介绍,应该对有这样需要的朋友很好的帮助。
如果装的是2000版的sql那用的命令是osql,05的用sqlcmd
其实用法很简单,任何技术,一旦说穿就失去了它的神秘,这有点像生活中的很多事,好了废话了半天,还是切入正题,开工吧:
其实就是一句很简单的话句:
sqlcmd -i sqlfile.sql -d databasename -s 127.0.0.1
这个sql文件要放在c:\下
就这么简单..
sqlcmd 使用笔记
登录sqlcmd
命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码
示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678"
直接执行SQL Script
命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码 -d 数据库 -i SQL Script
示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678" -d "Database" -i "E:My Documentstest.sql"
查询当前服务器上的数据库
(*) 可能需要 Use Master
1. Select [Name] From sysdatabases
2. sp_helpdb
查询当前数据库的表和存储过程
表:select * from sysobjects where status >=0 and xtype='U'
存储过程:select * from sysobjects where status >=0 and xtype='P'
------------------------
1、你可以用SQLCMD执行交互式动作,如:
C:\sqlcmd>sqlcmd
1> SELECT name from sys.databases
2> GO
你也可以试着键入如下命令,现实服务器列表
1>:ServerList
SERVERS:
WUYZ
1>如果想看其他命令的使用,可以键入:Help /?
2、执行SQL脚本文件
你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例如:
C:\sqlcmd>sqlcmd -i test.sql
上面的I选项允许你执行一个脚本文件,另外,你也可以指定O选项,把命令的输出导出到指定文件,当然,我们也可以在代码中指定输出结果,如下
C:\sqlcmd>sqlcmd
1> :out output.txt
2> :r test.sql
3、在脚本中使用变量
SQLCMD支持可以在脚本中接收用户传入的变量信息,如下面语句:
SET NOCOUNT ON
Select $(Cols) from $(tablename)
GO
上面语句请求2个参数,我们可以通过指定相应的参数信息传给脚本,如下:
C:\sqlcmd>sqlcmd -i test.sql -o Output.txt -v cols="name,object_id,create_date" tablename="sys.objects"
上面语句的用途是:执行TEST.SQL脚本文件,并把输出的信息输出到OUTPUT.TXT文件中,并分别指定了COLS,TABLENAME的参数值
4、在脚本中设置变量的值
除了通过外部传入参数的值外,还可以在内部设置参数的值,如下面例子
e:\sqlcmd\backuptemplate.sql
use master
backup database [$(db)] to disk='$(file)'
e:\sqlcmd\backupsingle.sql
:setvar db msdb
:setvar file c:\temp\msdb.bak
:r e:\sqlcmd\backuptemplate.sql
如果你想知道当然定义了哪些变量,可以使用:listvar命令来显示。主要命令汇总:
:r filename
:ServerList
:List
:Listvar
:Error filename | STDOUT | STDERR
:Out filename | STDOUT | STDERR
:Perftrace filename | STDOUT | STDERR
:Connect server[\instance] [timeout] [user_name[password] ]
:On Error [exit | ignore]
:SetVar variable value
:Help:XML ON | OFF
主要环境变量汇总:
-a SQLCMDPACKETSIZE
-d SQLCMDDBNAME
-H SQLCMDWORKSTATION
-h SQLCMDHEADERS
-l SQLCMDLOGINTIMEOUT
-m SQLCMDERRORLEVEL
-P SQLCMDPASSWORD
-S SQLCMSSERVER
-s SQLCMDCOLSEP
-t SQLCMDSTATTIMEOUT
-U SQLCMDUSER
-w SQLCMDCOLWIDTH
------------------------
T-SQL还原数据库备份
restore database TionkDatabase from disk='E:\@工作\讯客\项目\讯客直销\代码\db20080521'
width move "源文件" to "目标文件位置"
------------------------
使用 T-SQL 执行还原
RESTORE 命令有两种形式显示如下:
RESTORE DATABASE 还原完整的资料库、档案或档案群组。
RESTORE LOG 还原交易记录档。
RESTORE 陈述式
执行完整资料库还原时 RESTORE 陈述式的语法如下:
RESTORE DATABASE database_name
[ FROM backup_device ]
[ WITH options ]
这个陈述式只要求资料库的档案名称和备份所在的位置。
执行档案和档案群组还原时陈述式的语法如下:
RESTORE DATABASE database_name
[ FILE = file_name ]
[ FILEGROUP = filegroup_name ]
[ FROM backup_device ]
[ WITH options ]
这个陈述式只要求资料库名称、档案名称或档案群组名称和备份所在的位置。
执行交易记录还原时陈述式的语法如下:
RESTORE LOG database_name
[ FROM backup_device ]
[ WITH options ]
就如同其他的命令,database_name 是还原将要执行的资料库名称。backup_device 参数可以是逻辑备份装置名称或实体装置的名称。如果要指定一个实体装置,必须限定它的装置类型-也就是说,装置名称前面必须加上 DISK=、TAPE= 或 PIPE=。可以指定一个或多个装置,中间以逗号隔开。
如果没有提供 FORM 子句,还原将无法进行,而且仍然会执行回复(除非执行NORECOVERY 选项)。这项技术可以用来将资料库设定为回复模式,而不还原其他附加资料。例如,可以执行多个差异还原操作,然后执行 RESTORE 陈述式,不需要 FORM 子句来将资料库设定为回复模式,就能够启动回复过程。
选项
选项 说明
RESTRICTED_USER 设定新还原资料库的安全性,只有 db_owner、dbcreater 和 sysadmin 角色成员才能存取该资料库。
FILE = file_number 如果在储存媒体中有多个备份集,可用来识别所使用的备份集。例如设定该数值为2,则使用磁带上的第二个备份集。
PASSWORD = password 指定储存备份的密码。
MEDIANAME =media_name 指定媒体的名称。
MEDIAPASSWORD = password 指定储存媒体的密码。
MOVE 'logical_file_name' TO 'OS_file_name'
更改还原档案的位置,例如:MOVE 'Northwind' TO 'D:\data\Northwind.mdf'。如果旧的磁碟无法使用,而需要还原到新的磁碟上时,可以使用这个选项。
NORECOVERY |RECOVERY | STANDBY = undo_file
NORECOVERY 指定在还原后,交易将无法退回或重新进行。如果将还原其他的备份(差异式备份或交易记录档备份),则需要用到这个选项。REVOVERY 为预设选项,它指定执行回复操作,并退回每个没有提交的变更。STANDBY 指定在还原需要还原情况下,建立还原(undo)档案。
KEEP_REPLICATION 指定当资料库还原时复制设定要保存下来。
NOUNLOAD | UNLOAD NOUNLOAD 指定在还原完成后不卸载储存媒体(例如,覆写备份磁带并弹出)。UNLOAD 为预设选项,指定在还原完成后卸载储存媒体。
REPLACE 指出即使资料档案已经存在,SQL Server 仍将还原这些档案。现存的档案将被删除和覆写。如果没有指定 REPLACE,那麼 SQL Server 将会核对 database_name 是否已经存在。如果已经存在,那麼将终止还原操作。这个安全特性帮助避免无意地将还原覆写正在工作的资料库。
RESTART 指定 SQL Server 在还原操作被中断后重新启动还原操作。
STATS [ = percentage ] 在还原操作完成了指定的百分率后显示讯息。如果需要监控操作的过程,这个选项将会很有用。
PARTIAL 指定执行部份还原。
STOPAT = date_time
(log restore only) www.koogoogle.cn/whois
指定资料库回复到 data_time 指定时刻的资料状态(只对记录档还原有效)。
STOPATMARK = 'mark' 指定还原操作进行到标记处。
STOPBEFOREMARK = 'mark' 指定还原操作进行到标记之前。
通过System.Data.SqlClient命名空间只能执行单条SQL,或多个内容中间用;分开,不能执行类似等命令,有没有一种方法能类似查询分析器一样执行一些批命令呢,答案是通过OSQL来执行。
OSQL详细用法:http://technet.microsoft.com/zh-cn/library/ms162806.aspx
通地进程来调用:

2 /// 执行OSQL命令
3 /// </summary>
4 public static void ExcuteOsqlCmd(string cmd, string errorFile, string filePath)
5 {
6 System.Diagnostics.Process p = new System.Diagnostics.Process();
7
8 p.StartInfo.FileName = "osql";
9 p.StartInfo.Arguments = cmd;
10 p.StartInfo.UseShellExecute = false;
11
12 p.StartInfo.RedirectStandardError = true;
13 p.StartInfo.CreateNoWindow=true;
14 p.Start();
15 p.WaitForExit();
16 //p.Close();
17 int exitCode = p.ExitCode;
18 if (exitCode != 0)
19 {
20 StreamReader sr = new StreamReader(errorFile, System.Text.Encoding.Default);
21 string all = sr.ReadToEnd();
22 sr.Close();
23 //ExcuteOtherCmd(string.Format("notepad \"{0}\"", errorFile));
24 throw new StepException(all);
25 }
26 }
调用如下:
string comm = string.Format(" -U {5} -P {0} -S {1} -d {2} -b -e -i \"{3}\" -o \"{4}\"", pass,
conn.DataSource,
conn.Database,
FilePath, errorFile,user);
Process.ExcuteOsqlCmd(comm, errorFile, FilePath);//直接执行一个SQL文件,路径为FilePath
SQLCMD的介绍的更多相关文章
- atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
atitit.sql server2008导出导入数据库大的表格文件... 1. 超过80M的文件是不能在查询分析器中执行的 1 2. Oracle ,mysql大的文件导入 1 2.1. 使用sql ...
- ms sql server 在cmd中执行sqlcmd的时候报错
cmd下直接输入sqlcmd会提示 错误: HResult 0x2,级别 16,状态 1命名管道提供程序: 无法打开与 SQL Server 的连接 [2].Sqlcmd: 错误: Microsoft ...
- sqlcmd
使用sqlcmd可以在批处理脚本中执行SQL.虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个: { -U login_id [ -P password ] } | –E ...
- (转)使用SQLCMD在SQLServer执行多个脚本
概述: 作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个sql文件,并且有执行顺序,如我现在工作的公司,十几个客 ...
- 使用SQLCMD在SQLServer执行多个脚本
原文:使用SQLCMD在SQLServer执行多个脚本 概述: 作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个 ...
- 使用SQLCMD在SQLServer执行多个脚本 转载
出处不明 概述: 作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个sql文件,并且有执行顺序,如我现在工作的公司 ...
- [转帖]Sqlcmd使用详解
Sqlcmd使用详解 2018年09月17日 13:36:39 吥輕誩放棄 阅读数:3053 版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...
- Sqlcmd使用详解
Sqlcmd实用工具,可以输入 TRANSACT-SQL 语句. 系统过程和脚本文件,通过各种可用模式: 通过命令提示符. 在中查询编辑器在 SQLCMD 模式下. 在 Windows 脚本文件. 在 ...
- Centos 7.3下 Linux For SQL Server安装及配置介绍
Centos 7.3下 Linux For SQL Server安装及配置介绍 高文龙关注13人评论2828人阅读2017-03-05 21:46:21 Centos 7.3下Linux For SQ ...
随机推荐
- 浅析pinyin4j源码 简单利用pinyin4j对中文字符进行自然排序(转)
pinyin4j项目 官网地址 http://pinyin4j.sourceforge.net/ 我们先把资源下载下来,连同源码和jar包一起放入工程.如下图: 接下来在demo包下,我们写一个测试 ...
- 据序和中序序列或者也许为了一个二进制序列,恢复二进制和打印图像(c语言)
首先要预购和序,以恢复它: 1.首先,我们使用的是递归的方式来完成 2.递归的最小单位:一个空的树和书的前言和第一序.该序列的第一个元素是树的第一序列根,调用这种方法 3.递归的终止条件是.当这棵树的 ...
- 房费制VB版本(一个)——系统分析
首先.我们先回答两个个问题: 1.机房收费系统"是什么"? 2.机房收费系统应该"干什么"? 我的回答 ...
- 单机部署redis主从备份
redis为了避免单点故障,也支持主从备份.个人在做主从备份的实验时,因为机器数量有限,一般非常少有多台机器做支撑. 本文就将叙述怎样在一台电脑上实现redis的主从备份. 同一台机器上部署多个red ...
- python 导入库问题
最终解决如下面:我不知道有没有多余的空间 from django.conf import settings from sys import path path.extend(['/home/zoues ...
- jquery-ui-bootstrap动态添加和删除标签页封装【效果更炫】
1.效果图 2.导入js和css <link rel="stylesheet" href="css/bootstrap/css/bootstrap.min.css& ...
- WebService到底是什么? [转]
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- 1005. 继续(3n+1)猜想 (25) (ZJUPAT 数学)
主题链接:http://pat.zju.edu.cn/contests/pat-b-practise/1005 卡拉兹(Callatz)猜想已经在1001中给出了描写叙述.在这个题目里.情况略微有些复 ...
- 两种计算和输出n内5要么9除尽互惠
#include<stdio.h> int main() { int i=0,n=0; float fSum=0; scanf("%d", &n); for ( ...
- linux_Ubuntu 12.04 安装jdk
1.下载jdk6jdk6下载地址为:http://download.java.net/jdk6/,根据操作系统的选择对应的安装包,我的是ubuntu 12.04 32bit的,所以下载的文件是jdk- ...