SQLCMD齐全指南 掌控 SQL Server

  • 电脑网络维修
  • 2024-11-15

SQL Server 领有被宽泛认可的一流治理工具——SQL Server Management Studio(简称 SSMS)。它提供了丰盛的性能,极大地简化了开发人员和数据库治理员(DBA)的上班。但是,有时刻也会遇到一些难以经过 SSMS 处置的疑问,尤其是在口头暂时 SQL 脚本或复原解体的 SQL Server 实例时。在这些场景下,SQLCMD就成为了你的得力工具。

在这篇文章中,咱们将深入学习 SQLCMD。它是一特性能弱小的命令行工具,可用于以下义务:

为了使 SSMS 中的查问编写更极速、更简便,并为数据库治理和操作提供额外性能,咱们引入了 dbForge SQL Tools。这是一套无缝集成到 SSMS 中的插件,极大地增强了 SSMS 的才干。

如今,让咱们从 SQLCMD 的装置开局。

要装置SQLCMD适用程序,你须要在装置SQL Server时选用本机SQL Server客户端工具。你还可以经常使用SQL Server装置治理器独自装置它。

你只有在PowerShell或命令揭示符中输入SQLCMD即可调用SQLCMD适用程序。要检查可与SQLCMD一同经常使用的选项列表,请运转以下命令:

PS C:\Users\nisar> SQLCMD -?

这是命令行口头后输入的样子:

如今,让咱们了解如何经常使用SQLCMD衔接到SQL Server实例。

示例1:衔接到自动的SQL Server实例

要在本地计算机上衔接到SQL Server,请经常使用以下SQLCMD命令:

C:\Users\nisar>sqlcmd -S Nisarg-PC

如你所见,命令输入为1>,这标明你已衔接到SQL Server。

请留意,假设你正在衔接到本地计算机上的SQL Server自动实例,则无需明白指定主机名/主机名。

如今,咱们来看另一个实例,演示如何衔接到特定命名的SQL Server实例。

要衔接到命名的SQL Server实例,你须要指定参数-S(主机名)。例如,假设你的主机称号是MyServer,命名实例是SQL2017,则经常使用SQLCMD衔接到它的命令将是:

C:\>sqlcmd -S Nisarg-PC\SQL2019

示例3:经常使用Windows身份验证和SQL Server身份验证衔接到SQL Server

如今,让咱们看看如何经常使用Windows和SQL Server身份验证衔接到SQL Server。

要经常使用SQLCMD衔接到SQL Server,你可以选用经常使用Windows身份验证或SQL Server身份验证。假设你想经常使用SQL Server身份验证,你须要指定`-U`(用户名)和`-P`(明码)选项。假设你没有确认明码,SQLCMD工具会揭示你输入明码。上方的截图说明了这一点。

在本节中,咱们将讨论如何在交互形式下运转SQLCMD、口头SQL查问以及检查输入。交互形式准许编写SQL语句和命令。让咱们从学习如何衔接到SQL主机、进入交互形式以及在SQLCMD中运转查问开局。

示例1:填充一个蕴含数据库及其一切者的列表

首先,经常使用以下命令衔接到你的数据库主机:

C:\>sqlcmd -S Nisarg-PC -U sa -p

当交互式会话开局后,在SQLCMD适用程序中运转以下SQL查问:

use master;select a.name,b.name from sys.databases a inner join sys.server_principals bon a.owner_sid=b.sid where a.name not in ('ReportServer','ReportServerTempDB')and a.database_id>5;

正如你所看到的,上述查问曾经填充了蕴含数据库及其一切者的数据库列表。

首先,衔接到数据库主机并口头以下查问:

Select DB_NAME()Go

查问前往到主数据库,由于我经常使用登录衔接到SQL Server时没有设置自动数据库。

参数经常使用SQLCMD运转SQL查问。例如,你想经常使用SQLCMD检查在SchoolManagement数据库中创立的表列表。该命令应编写如下:

C:\>sqlcmd -S Nisarg-PC -d SchoolManagement -Q "select name from sys.tables"

雷同,你也可以运转其余查问。请留意,用于衔接SQL主机的登录名必定具备数据库所需的权限。

在这里,咱们将讨论如何经过命令揭示符口头SQL脚本。当你须要运转智能化义务、批量操作以及长期间运转且不须要用户输入的查问时,此性能十分有用。

首先,我曾经创立了一个SQL脚本,其中蕴含一个SQL查问,该查问用于失掉在WideWorldImporters数据库中创立的对象列表。该查问内容如下:

use [WideWorldImporters]goselect name, type_desc, create_date from sys.objects where type_desc <>'SYSTEM_TABLE'

请将上述查问减少到名为sp_get_db_objects.sql的SQL脚本中。接上去,咱们将把查问的输入导出到一个名为database_objects.txt的文本文件中。

为此,咱们将经常使用以下选项:

如今,让咱们口头以下命令:

sqlcmd -S Nisarg-PC -i D:\Scripts\DBObjects.sql -o D:\Scripts\WideWorldImportores_objects.txt

命令成功口头后,你可以检查文本文件输入的内容:

正如你在上方的屏幕截图中看到的那样,查问已成功口头。

接上去,咱们将经过另一个示例展现来学习如何经常使用SQL脚本生成StackOverflow2010的备份。生成备份的查问如下:

use mastergobackup with compression, stats=5

我曾经将上述备份命令存储在名为StackOverflow2010_backup_script.sql的SQL脚本中。要口头此脚本,SQLCMD命令将如下所示:

从上述截图可以看出,备份曾经生成。

要在SSMS(SQL Server Management Studio)中经常使用SQLCMD,首先必定启用SQLCMD形式。为此,请从菜单当选用“查问”,而后选用“SQLCMD形式”,如下所示:

假设你宿愿自动状况下启用SQLCMD形式,请转到“工具”→“选项”。在“选项”对话框中,选用“查问口头”→“SQL Server”→“惯例”,并勾选“自动状况下,在新查问中关上SQLCMD形式”复选框。

如今,让咱们看看如何经常使用它。

例如,我想失掉Stackoverflow2010数据库中Posts表的总记载数。查问应编写如下:

:SETVAR TABLENAME "Posts":SETVAR>

如今,咱们运转查问。以下截图显示了查问输入的内容:

如今,让咱们看看如何在PowerShell中经常使用SQLCMD。

让咱们举一个繁难的例子。假定我想失掉WideWorldImporters数据库中存储环节的列表。以下是PowerShell命令:

PS C:\WINDOWS\system32> invoke-sqlcmd -database wideworldimporters -query "select name from sys.procedures"

SQL Server中的PowerShell模块(SQLPS)也提供了一种将SQL脚本输入导入文本文件的形式。假定咱们须要导出SQL主机代理上班列表。我曾经创立了一个名为SQLJobs.sql的脚本,用于检索SQL上班列表的相关信息。该脚本蕴含以下T-SQL命令:

use [msdb]goselect name, description,date_created from Sysjobs

为了运转该脚本,我在SQL Server的PowerShell中口头以下命令:

invoke-sqlcmd -inputfile "D:\Scripts\SQLJobs.sql" | Out-File -FilePath "D:\Scripts\SQLJobs_List.txt"

命令成功后,我关上输入文件,内容如下图所示:

SQLCMD提供了多种初级技巧,可以协助用户更有效地经常使用该工具。本文将经过繁难示例来阐释其中一些初级用法。

示例1:依据失误重大级别显示失误信息

该示例展现了如何依据失误的重大级别来显示相应的失误信息。可以经过减少-m参数来启用此性能。假定你尝试对一个不存在的数据库对象口头SELECT查问,通常这将前往"Invalid object"(有效对象)的失误信息,其重大级别为16。结果如下:

接上去,咱们来钻研一个重大级别为15(语法失误)的示例:

正如你在上方的截图中看到的,当失误重大级别为15的时刻,SQLCMD没有显示任何失误。

本示例阐释了如何在命令或查问口头环节中遇到失误时,分开SQLCMD会话。要启用此性能,须要指定-b参数。假定你宿愿在查问遇到"数据库不存在"的失误时分开SQLCMD,如下图所示:

本示例阐释了在口头T-SQL脚本时如何接受用户输入。这须要在SQLCMD中编写变量脚本。为了演示这一性能,我创立了一个脚本,用于填充某个国度的正式称号。该脚本经常使用WideWorldImporters数据库和application.Countries表。脚本的关键内容如下:

use [WideWorldImporters]Goselect CountryName, FormalName from application.countries where CountryName=$(CountryName)Go

如今,我保留脚本并经常使用以下SQLCMD命令口头它:

sqlcmd -S Nisarg-PC -v CountryName='India' -i D:\Scripts\Asia_Countries.sql

如你所见,查问前往了正式称号India。

经过本文的引见,你曾经了解了SQLCMD命令的多种用法和示例运行。SQLCMD是一款性能弱小的工具,可用于口头脚本、导出输入到各种文件格局,以及治理SQL Server实例。另外,当数据库主机产生损坏或不可访问的状况时,你还可以应用公用治理衔接(Dedicated Administrator Connection,简称DAC)来失掉访问权限。

此外,咱们倡导你思索经常使用第三方增强工具,如dbForge SQL Tools等插件包,来裁减SQL Server Management Studio(SSMS)的基础性能。这些插件可为SSMS提供诸如智能代码补全、代码格局化、源代码控制、单元测试、命令行智能化等多种增强性能,极大地提高了开发效率。

DbForge SQL Tools为新用户提供长达30天的收费试用期。一旦你装置了该插件包,一切增强性能都可以繁难地在SSMS的菜单和对象资源治理器中间接访问经常使用。依据我的实践经常使用体验,这些增强工具节俭了少量的开发期间,因此我向你剧烈介绍经常使用。

刘涛,社区编辑,某大型央企系统上线检测管控担任人。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8539.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号