sqlcmd介绍彩民之家高手论坛

2019-11-21 20:19 来源:未知

1.   Windows

a)       安装Python,最新安装包下载地址:,注意安装的时候要选择”Add Python to PATH”选项:

彩民之家高手论坛 1

b)      安装mssql-scripter,命令行里执行下面命令:

pip install mssql-scripter

执行档案和档案群组还原时陈述式的语法如下:
RESTORE DATABASE database_name
[ FILE = file_name ]
[ FILEGROUP = filegroup_name ]
[ FROM backup_device ]
[ WITH options ]
这个陈述式只要求资料库名称、档案名称或档案群组名称和备份所在的位置。

3.   macOS(暂时没有环境,未测试)

a)       检查pip版本,是否是9.0及其以上:

pip –version

b)      如果pip未安装或者版本低于9.0,使用如下命令安装以及升级版本:

sudo apt-get install python-pip
sudo pip install --upgrade pip

c)       安装mssql-scripter:

sudo pip install mssql-scripter

 

如果你想知道当然定义了哪些变量,可以使用:listvar命令来显示。主要命令汇总:

这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter。它支持在SQL Server、Azure SQL DB以及Azure SQL DW中为数据库生成CREATE和INSERT T-SQL脚本。

 

2.   Linux

a)      检查pip版本,是否是9.0及其以上:

pip –version

b)      如果pip未安装或者版本低于9.0,使用如下命令安装以及升级版本:

sudo apt-get install python-pip
sudo pip install --upgrade pip

c)      安装mssql-scripter:

sudo pip install mssql-scripter

如果系统是Ubuntu或者Debian,需要安装libunwind8软件包:

-w SQLCMDCOLWIDTH

 

RESTORE 陈述式

Mssql-scripter是一个跨平台的命令行工具,功能等同于SQL Server Management Studio中的Generate and Publish Scripts Wizard。

 

Installation

C:sqlcmd>sqlcmd -i test.sql -o Output.txt -v cols="name,object_id,create_date" tablename="sys.objects"

咱们能够在Linux、macOS和Windows上使用它生成数据定义语言(DDL-Data Definition Language)和数据操纵语言(DML – Data Manipulation Language),并且生成的T-SQL脚本可以运行在所有平台的SQL Server、Azure SQL Database、以及Azure SQL Data Warehouse中。

T-SQL还原数据库备份
restore database TionkDatabase from disk='E:@工作讯客项目讯客直销代码db20080521'
width move "源文件" to "目标文件位置"

Ubuntu 14 & 17

执行如下命令:

sudo apt-get update
sudo apt-get install libunwind8

GO

Usage Guide

帮助命令:

mssql-scripter -h
usage: mssql-scripter [-h] [--connection-string  | -S ] [-d] [-U] [-P] [-f]
                  [--data-only | --schema-and-data]
                  [--script-create | --script-drop | --script-drop-create]
                  [--target-server-version {2005,2008,2008R2,2012,2014,2016,vNext,AzureDB,AzureDW}]
                  [--target-server-edition {Standard,PersonalExpress,Enterprise,Stretch}]
                  [--include-objects [[...]]] [--exclude-objects [[...]]]
                  [--ansi-padding] [--append] [--check-for-existence] [-r]
                  [--convert-uddts] [--include-dependencies] [--headers]
                  [--constraint-names] [--unsupported-statements]
                  [--object-schema] [--bindings] [--collation]
                  [--defaults] [--extended-properties] [--logins]
                  [--object-permissions] [--owner] [--use-database]
                  [--statistics] [--change-tracking] [--check-constraints]
                  [--data-compressions] [--foreign-keys]
                  [--full-text-indexes] [--indexes] [--primary-keys]
                  [--triggers] [--unique-keys] [--display-progress]
                  [--enable-toolsservice-logging] [--version]

Microsoft SQL Server Scripter Command Line Tool. Version 1.0.0a1

optional arguments:
  -h, --help            show this help message and exit
  --connection-string   Connection string of database to script. If connection
                        string and server are not supplied, defaults to value
                        in Environment Variable
                        MSSQL_SCRIPTER_CONNECTION_STRING.
  -S , --server         Server name.
  -d , --database       Database name.
  -U , --user           Login ID for server.
  -P , --password       Password.
  -f , --file           Output file name.
  --data-only           Generate scripts that contains data only.
  --schema-and-data     Generate scripts that contain schema and data.
  --script-create       Script object CREATE statements.
  --script-drop         Script object DROP statements
  --script-drop-create  Script object CREATE and DROP statements.
  --target-server-version {2005,2008,2008R2,2012,2014,2016,vNext,AzureDB,AzureDW}
                        Script only features compatible with the specified SQL
                        Version.
  --target-server-edition {Standard,PersonalExpress,Enterprise,Stretch}
                        Script only features compatible with the specified SQL
                        Server database edition.
  --include-objects [ [ ...]]
                        Database objects to include in script.
  --exclude-objects [ [ ...]]
                        Database objects to exclude from script.
  --ansi-padding        Generates ANSI Padding statements.
  --append              Append script to file.
  --check-for-existence
                        Check for database object existence.
  -r, --continue-on-error
                        Continue scripting on error.
  --convert-uddts       Convert user-defined data types to base types.
  --include-dependencies
                        Generate script for the dependent objects for each
                        object scripted.
  --headers             Include descriptive headers for each object scripted.
  --constraint-names    Include system constraint names to enforce declarative
                        referential integrity.
  --unsupported-statements
                        Include statements in the script that are not
                        supported on the target SQL Server Version.
  --object-schema       Prefix object names with the object schema.
  --bindings            Script options to set binding options.
  --collation           Script the objects that use collation.
  --defaults            Script the default values.
  --extended-properties
                        Script the extended properties for each object
                        scripted.
  --logins              Script all logins available on the server, passwords
                        will not be scripted.
  --object-permissions  Generate object-level permissions.
  --owner               Script owner for the objects.
  --use-database        Generate USE DATABASE statement.
  --statistics          Script all statistics.
  --change-tracking     Script the change tracking information.
  --check-constraints   Script the check constraints for each table or view
                        scripted.
  --data-compressions   Script the data compression information.
  --foreign-keys        Script the foreign keys for each table scripted.
  --full-text-indexes   Script the full-text indexes for each table or indexed
                        view scripted.
  --indexes             Script the indexes (XML and clustered) for each table
                        or indexed view scripted.
  --primary-keys        Script the primary keys for each table or view
                        scripted.
  --triggers            Script the triggers for each table or view scripted.
  --unique-keys         Script the unique keys for each table or view
                        scripted.
  --display-progress    Display scripting progress.
  --enable-toolsservice-logging
                        Enable verbose logging.
  --version             show program's version number and exit

相关例子:

  • Dump database object schema

    # generate DDL scripts for all objects in the Adventureworks database and save the script to a file mssql-scripter -S localhost -d AdventureWorks -U sa

    # alternatively, specify the schema only flag to generate DDL scripts for all objects in the Adventureworks database and save the script to a file mssql-scripter -S localhost -d AdventureWorks -U sa --schema-only

  • Dump database object data

    # generate DDL scripts for all objects in the Adventureworks database and save the script to a file mssql-scripter -S localhost -d AdventureWorks -U sa --data-only

  • Dump the database object schema and data

    # script the database schema and data to a file. mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data > ./adventureworks.sql

    # execute the generated above script with sqlcmd sqlcmd -S mytestserver -U sa -i ./adventureworks.sql

  • Include database objects

    # generate DDL scripts for objects that contain 'Employee' in their name to stdout mssql-scripter -S localhost -d AdventureWorks -U sa --include-objects Employee # generate DDL scripts for the dbo schema and pipe the output to a file mssql-scripter -S localhost -d AdventureWorks -U sa --include-objects dbo. > ./dboschema.sql

  • Exclude database objects

    # generate DDL scripts for objects that do not contain 'Sale' in their name to stdout mssql-scripter -S localhost -d AdventureWorks -U sa --exclude-objects Sale

  • Target server version

    # specify the version of SQL Server the script will be run against mssql-scripter -S -U myUser -d AdventureWorks –target-server-version “SQL Azure DB” > myData.sql

  • Target server edition

    # specify the edition of SQL Server the script will be run against mssql-scripter -S -U myUser -d devDB –target-server-edition “SQL Server Enterprise Edition” > myData.sql

  • Pipe a generated script to sed

下面这个是Linux和macOS的用法。

# change a schema name in the generated DDL script
# 1) generate DDL scripts for all objects in the Adventureworks database
# 2) pipe generated script to sed and change all occurrences of SalesLT to SalesLT_test and save the script to a file
mssql-scripter scripter -S localhost -d Adventureworks -U sa | sed -e "s/SalesLT./SalesLT_test./g" > adventureworks_SalesLT_test.sql
  • Script data to a file

    # script all the data to a file. mssql-scripter -S localhost -d AdventureWorks -U sa --data-only > ./adventureworks-data.sql

更详细的Usage Guide或更新请参考:。

 

下面执行一个命令看看效果,生成SharePoint Translation Service Database的CREATE语句:

mssql-scripter --server 10.2.53.22ZEUS --database 'TranslationService_cd4699102b0745ba81ca0cf72d9ffe6e' --user sa --password '1qaz2wsxE' --file E:CreateTranslationServiceDatabase.sql

执行结果的文件可以在这里下载:。

 

另外还可以把连接字符串设置成环境变量:

# set environment variable MSSQL_SCRIPTER_CONNECTION_STRING with a connection string.
export MSSQL_SCRIPTER_CONNECTION_STRING='Server=myserver;Database=mydb;User Id=myuser;Password=mypassword;'
mssql-scripter 

# set environment variable MSSQL_SCRIPTER_PASSWORD so no password input is required.
export MSSQL_SCRIPTER_PASSWORD='ABC123'
mssql-scripter -S localhost -d AdventureWorks -U sa

 

[原创文章,转载请注明出处,仅供学习研究之用,如有错误请留言,谢谢支持]

[原文:,来自永远薰薰]

命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码

Debian 8(暂时没有环境,未测试)

文件‘/etc/apt/sources.list’需要更新:

deb http://ftp.us.debian.org/debian/ jessie main

执行如下命令:

sudo apt-get update
sudo apt-get install libunwind8

登录sqlcmd

就这么简单..

2> GO

选项                        说明
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:dataNorthwind.mdf'。如果旧的磁碟无法使用,而需要还原到新的磁碟上时,可以使用这个选项。

直接执行SQL Script

e:sqlcmdbackuptemplate.sql

:List

1>:ServerList

RESTORE 命令有两种形式显示如下:
RESTORE DATABASE 还原完整的资料库、档案或档案群组。
RESTORE LOG 还原交易记录档。

如果装的是2000版的sql那用的命令是osql,05的用sqlcmd

-P SQLCMDPASSWORD

:Listvar

1> SELECT name from sys.databases

-m SQLCMDERRORLEVEL

sqlcmd -i sqlfile.sql -d databasename -s 127.0.0.1

最近经常用到超过80M *.sql文件的导入问题。

你也可以试着键入如下命令,现实服务器列表

WUYZ

(*) 可能需要 Use Master

SET NOCOUNT ON

-h SQLCMDHEADERS

-d SQLCMDDBNAME

 

 

上面语句的用途是:执行TEST.SQL脚本文件,并把输出的信息输出到OUTPUT.TXT文件中,并分别指定了COLS,TABLENAME的参数值

:Help:XML ON | OFF

2> :r test.sql

查询当前数据库的表和存储过程

主要环境变量汇总:

 

执行交易记录还原时陈述式的语法如下:
RESTORE LOG database_name
[ FROM backup_device ]
[ WITH options ]
就如同其他的命令,database_name 是还原将要执行的资料库名称。backup_device 参数可以是逻辑备份装置名称或实体装置的名称。如果要指定一个实体装置,必须限定它的装置类型-也就是说,装置名称前面必须加上 DISK=、TAPE= 或 PIPE=。可以指定一个或多个装置,中间以逗号隔开。

:setvar db msdb

这个sql文件要放在c:下

 

 

查询当前服务器上的数据库

  1. Select [Name] From sysdatabases

  2. sp_helpdb

因为公司的业务需要,所以采集了一个2W多条的数据,都是insert语句,生成一个200多M的数据,谁料在通过sql server 2005不能直接打开,导入也存在问题,用记事本也打不开,复制贴也不行,最后还是一同学提了个醒用命令在dos下执行.sql文件,才有了办法,同时也 在一热心网友的帮助下完成了这个让我头疼半天的活,下面我对这些做一下介绍,应该对有这样需要的朋友很好的帮助。

SERVERS:

-s SQLCMDCOLSEP

-U SQLCMDUSER

找了些解决方案,个人感觉最简单的方法就是这个SQLCMD的,拿出来分享一下,也方便日后自己使用。

backup database [$(db)] to disk='$(file)'

:r filename

:Perftrace filename | STDOUT | STDERR

 sqlcmd  -U "sa" -P "111" -d "databasename" -i "mydata.sql"

示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678" -d "Database" -i "E:My Documentstest.sql"

存储过程:select * from sysobjects where status >=0 and xtype='P'

3、在脚本中使用变量

:On Error [exit | ignore]

Select $(Cols) from $(tablename)

2、执行SQL脚本文件


选项

SQLCMD支持可以在脚本中接收用户传入的变量信息,如下面语句:

 调用如下:
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

表:select * from sysobjects where status >=0 and xtype='U'

如果没有提供 FORM 子句,还原将无法进行,而且仍然会执行回复(除非执行NORECOVERY 选项)。这项技术可以用来将资料库设定为回复模式,而不还原其他附加资料。例如,可以执行多个差异还原操作,然后执行 RESTORE 陈述式,不需要 FORM 子句来将资料库设定为回复模式,就能够启动回复过程。

下面的内容是详细介绍sqlcmd的,有兴趣的朋友可以看看

执行完整资料库还原时 RESTORE 陈述式的语法如下:
RESTORE DATABASE database_name
[ FROM backup_device ]
[ WITH options ]
这个陈述式只要求资料库的档案名称和备份所在的位置。


:Out filename | STDOUT | STDERR

C:sqlcmd>sqlcmd -i test.sql

使用 T-SQL 执行还原

C:sqlcmd>sqlcmd

分享: 

彩民之家高手论坛 2C#代码

:Connect server[instance] [timeout] [user_name[password] ]

:Error filename | STDOUT | STDERR

通过System.Data.SqlClient命名空间只能执行单条SQL,或多个内容中间用;分开,不能执行类似等命令,有没有一种方法能类似查询分析器一样执行一些批命令呢,答案是通过OSQL来执行。
OSQL详细用法:
通地进程来调用:

命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码 -d 数据库 -i SQL Script

你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例如:

1 sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -i filename.sql

-S SQLCMSSERVER

:SetVar variable value


 1         /// <summary>
 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          }

(log restore only) www.koogoogle.cn/whois
指定资料库回复到 data_time 指定时刻的资料状态(只对记录档还原有效)。
STOPATMARK = 'mark' 指定还原操作进行到标记处。
STOPBEFOREMARK = 'mark' 指定还原操作进行到标记之前。

4、在脚本中设置变量的值
除了通过外部传入参数的值外,还可以在内部设置参数的值,如下面例子

-t SQLCMDSTATTIMEOUT

sqlcmd 使用笔记

e:sqlcmdbackupsingle.sql

:r e:sqlcmdbackuptemplate.sql

1、你可以用SQLCMD执行交互式动作,如:
C:sqlcmd>sqlcmd

1>如果想看其他命令的使用,可以键入:Help /?

上面的I选项允许你执行一个脚本文件,另外,你也可以指定O选项,把命令的输出导出到指定文件,当然,我们也可以在代码中指定输出结果,如下

1> :out output.txt

use master

:setvar file c:tempmsdb.bak

:ServerList

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

-a SQLCMDPACKETSIZE

-l SQLCMDLOGINTIMEOUT

 

-H SQLCMDWORKSTATION

上网找了一下,发现超过80M的文件是不能在查询分析器中执行的。

其实用法很简单,任何技术,一旦说穿就失去了它的神秘,这有点像生活中的很多事,好了废话了半天,还是切入正题,开工吧:

上面语句请求2个参数,我们可以通过指定相应的参数信息传给脚本,如下:

其实就是一句很简单的话句:

 

示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678"

通过OSQL命令执行SQL SERVER批SQL

TAG标签: 数据库
版权声明:本文由彩民之家高手论坛发布于彩民之家高手论坛,转载请注明出处:sqlcmd介绍彩民之家高手论坛