标签: sqlcmd

SQLCMD包括文件夹中的所有脚本

在我的Post Deployment Script中,我想使用这样的通配符将所有脚本文件包含在一个文件夹中:r.\ $(ReleaseName)\*.sql

有没有办法做到这一点?我找不到任何..

sqlcmd sql-server-data-tools

6
推荐指数
1
解决办法
1329
查看次数

在sql postdeployment构建脚本中使用变量?

我希望能够做的是能够在Visual Studio数据库项目中创建一个定义变量的publising xml脚本,该脚本将用于编写脚本.

我的问题是我得到一个错误:"SQL72008:未定义变量DeployType." 如果我没有在后部署脚本中定义变量,就像这样":setvar DeployType"varchar(100)"

当我运行publish.xml时,DeployType参数正确地设置在生成的脚本的顶部但是该值被":setvar DeployType"varchar(100)覆盖.所以为了使这项工作,我需要手动删除运行此脚本之前的行.

所以问题是如何在没有在postdeployment脚本中默认setvar变量的情况下让项目构建并能够发布?

在此输入图像描述

这是我的PostDeployment.sql文件的内容,它不会在没有默认DeployType变量的情况下构建

--The line causing my problems. I would like to skip it somehow.
:setvar DeployType "varchar(100)"

Print 'Always include core'
:r ..\Data\Core\_BaseCore.sql

--Conditionaly add based on DeployType comming from the publishing.xml
IF ('$(DeployType)' = 'A')
BEGIN
:r ..\Data\A\_BaseKnap.sql
END
ELSE IF ('$(DeployType)' = 'B')
BEGIN
:r ..\Data\B\_BaseB.sql
END
Run Code Online (Sandbox Code Playgroud)

这是Database.publish.xml文件中的内容

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup>
   <IncludeCompositeObjects>True</IncludeCompositeObjects>
   <TargetDatabaseName>db name</TargetDatabaseName>
   <DeployScriptFileName>Database.sql</DeployScriptFileName>
   <ProfileVersionNumber>1</ProfileVersionNumber>
   <TargetConnectionString>Connection string</TargetConnectionString>
 </PropertyGroup>
 <ItemGroup> …
Run Code Online (Sandbox Code Playgroud)

sql msbuild sqlcmd database-project

6
推荐指数
1
解决办法
4995
查看次数

SQL Server网络接口:连接字符串无效[87]

当我从我的SQL Server 2008实例上的cmd运行它时:

sqlcmd -U sa -S mymachinen_name\MSSQLSERVER
Run Code Online (Sandbox Code Playgroud)

(MSSQLSERVER我的实例名称在哪里)

我得到密码提示,之后我得到了这个:

密码:

HResult 0x57,Level 16,State 1 SQL Server网络接口:连接字符串无效[87].

Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误.找不到服务器或无法访问服务器.检查实例名称是否正确以及SQL Server是否配置为允许远程连接.有关详细信息,请参阅SQL Server联机丛书..

Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:登录超时已过期.

我启动了SQL Server浏览器服务,也可以通过Windows身份验证登录Management Studio.

还发现了这篇知识库文章,但这是针对SQL Server 2005/2000的.

sql-server sqlcmd

6
推荐指数
1
解决办法
3万
查看次数

是否可以使用SqlCmd对localdb数据库运行脚本?

我有一个大的SQL脚本(1gb),我试图在一个(localdb)\v11.0实例上运行,SqlCmd在命令行窗口中使用,但到目前为止,我尝试过的任何命令都没有使用它.

例如

sqlcmd.exe -S "(localdb)\v11.0" -Q "select 1"
Run Code Online (Sandbox Code Playgroud)

失败并出现通用连接错误:

建立与SQL Server的连接时发生了与网络相关或特定于实例的错误.找不到服务器或无法访问服务器.检查实例名称是否正确以及SQL Server是否配置为允许远程连接.

然而

sqlcmd.exe -S "MY-PC" -Q "select 1"
Run Code Online (Sandbox Code Playgroud)

我的电脑上的SQL Server实例很好用.

在(localdb)实例上"允许远程连接"设置为true,而我运行的用户sqlcmd是它的所有者.

Sqlcmd实际上是否适用于(localdb)实例?还有其他明显的事情我可能做错了吗?

sql-server sqlcmd localdb

6
推荐指数
1
解决办法
5962
查看次数

如何在 setvar 变量 SQL 中动态设置值

我正在使用 SQLCMD 模式。我想设置 setvar 变量值。我应该如何在 :setvar 中设置值?我的代码是这样的:

DECLARE @DatabaseName AS nvarchar(180)
set @DatabaseName = '$(dbName)'    
print @DatabaseName     
:setvar DatabaseName @DatabaseName 
Run Code Online (Sandbox Code Playgroud)

sql sql-server sqlcmd

6
推荐指数
1
解决办法
2230
查看次数

如何执行3GB的SQL文件(Microsoft SQL Server)?

我有一个大的SQL文件,不适合内存,需要针对Microsoft SQL Server 2008执行.似乎该sqlcmd.exe工具始终首先将其加载到内存中,在这种情况下是不可能的.有任何想法吗?

不幸的是,我无法拆分脚本,因为它是由Red Gate出色的SQL数据比较生成的.整个脚本是一个大事务,我想保持这种方式.我从未想过拥有一个巨大的脚本是不寻常的,因为在数据库世界中拥有大量数据是很常见的.该脚本的大小为3GB.

sql sql-server sqlcmd redgate sqlcompare

5
推荐指数
1
解决办法
6285
查看次数

你能让SQLCMD立即在脚本中运行每个语句而不使用"GO"吗?

在SQLCMD中运行脚本时,是否有设置,参数或任何其他方法使其在每个SQL语句结束时有效地运行GO命令?

这样可以防止需要将定期GO命令插入到非常大的脚本中.

sql-server sqlcmd

5
推荐指数
1
解决办法
4970
查看次数

将SQL查询结果导出为CSV

我正在使用sqlcmd将带有两列的查询结果导出到csv.简单的查询是:

SELECT DISTINCT
    CustomerGuid, CustomerPassword
FROM
    ServiceOrder
ORDER BY
    CustomerGuid
Run Code Online (Sandbox Code Playgroud)

当我在Excel中打开导出的csv时,客户和密码都在同一列上.是否可以使用sqlcmd将它们拆分为自己的列.我的sqlcmd看起来像

SQLCMD -S . -d BAS -Q "SQL STATEMENT" -s "," -o "c:\data.csv"
Run Code Online (Sandbox Code Playgroud)

谢谢.

sql sql-server excel sqlcmd

5
推荐指数
1
解决办法
7655
查看次数

sqlcmd输出文件删除页眉和页脚

使用SQLCMD,我可以将查询结果输出到文本文件,现在,文本文件有标题: 在此输入图像描述

并且页脚: 在此输入图像描述

如何在查询期间删除它们?

我的查询,在一个sql文件中:

SELECT internal_no, item_no, dspl_descr, rtl_prc FROM PLU

我的SQLCMD命令:

SQLCMD -S SQLSERVER01 -U AdminUser -P au5584 -i C:\text.sql -o C:\out.txt

sqlcmd sql-server-2008

5
推荐指数
1
解决办法
1万
查看次数

结合命令行和T-SQL - SQL Server

我想通过T-SQL SQL Server 2008上执行一些SQLCMD有我的代码的一部分在那里我检查数据文件的大小,如果该数据文件大小不等于0,然后开始删除特定表,我可以在新数据中使用BCP.

下面是我的代码未执行:

SET @myVariable = '
SETLOCAL 
FOR %%R IN (X:\Main Folder\Data\'+@databaseName+'_'+@tableName+'.dat) DO SET size=%%~zR 
IF %size% NEQ 0 (
        SQLCMD -E -S my-server-name -Q "DELETE FROM '+@databaseName+'.'+@schemaName+'.'+@tableName+';" >> X:\Main Folder\Log\Log.txt 
)'

EXEC master..xp_cmdshell @myVariable
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当我执行我的存储过程时,上面的代码似乎被跳过,因为它不会回写任何错误消息.

编辑:重新调整间距和我的代码,@ myVariable,现在执行.但是,即使数据文件大小= 0,它仍然无法删除表.但是,当我在批处理文件中对其进行硬编码时,它的工作方式非常好.有任何想法吗?

sql-server sqlcmd

5
推荐指数
1
解决办法
583
查看次数