标签: sqlcmd

如何加密数据库的所有现有存储过程

是否有可能在通过SQLCMD脚本创建SQL Server 2008数据库之后加密它们的所有现有存储过程?

我想这样做的原因如下:
我想开发没有加密的存储过程,所以我可以轻松点击SQL Server Management Studio中的"修改"来检查它们的内容.
但是,对于部署我想加密它们,所以我想也许我可以写一个脚本,只有在它们被创建后加密它们.对于开发系统,我不会在最终用户系统上运行脚本,而是运行脚本.

sql-server encryption stored-procedures sqlcmd sql-server-2008

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

在TQSQL脚本中使用双引号在SQLCMD中失败,但在SSMO中失败

通过sqlcmd执行以下脚本失败.但是,通过ssmo或SQL Server Management Studio执行它可以正常工作.

sqlcmd -S . -d test -i input.sql
Run Code Online (Sandbox Code Playgroud)

input.sql:

CREATE FUNCTION test()  
RETURNS  @t TABLE ("ID" INT)  
AS  
BEGIN  
 RETURN  
END  
Run Code Online (Sandbox Code Playgroud)

即使我将SQL Server Management Studio置于sqlcmd模式,它仍然会失败.这是一个问题,因为我们使用SSMS测试脚本,但使用SQLCMD进行部署.因此,我们只发现当我们尝试部署时,我们的代码不起作用.

为什么sqlcmd的行为如此?有没有办法把它关掉?

t-sql sql-server sqlcmd

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

以编程方式检测哪个SQL Server是主体,哪个是镜像?

我正在寻找一种方法来以编程方式查询哪个SQL服务器作为主要SQL服务器,哪一个是一对中的镜像.有没有人知道这是否可以通过PowerShell(SQLPS)或CMD(SQLCMD)?如果是这样,我该如何查询此信息?

提前致谢!

sql-server powershell scripting sqlcmd

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

sqlcmd,带有输出文件和屏幕输出

我用sqlcmd做一些命令行批处理(.bat):

sqlcmd -i Scripts\STEP01.sql -o PROCESS.log -S MYSERVER -E -d MYDATABASE
Run Code Online (Sandbox Code Playgroud)

我需要一个输出文件(它目前正在工作),还需要输出屏幕来执行以下操作:

@echo off
echo The result of the query was:
    sqlcmd -i Scripts\STEP01.sql -o PROCESS.log -S MYSERVER -E -d MYDATABASE
pause
CHOICE /C:YN /M "Is the result accord?"
IF ERRORLEVEL 2 GOTO ENDWITHERROR
IF ERRORLEVEL 1 GOTO STEP2
Run Code Online (Sandbox Code Playgroud)

注意:

  • 是的,脚本工作很麻烦,这不是问题.
  • 是的,我在我的SQL上有一个"打印"的东西.日志文件获取输出.

非常感谢!

类似的问题没有答案: 如何使用sqlcmd运行sql脚本文件并输出到shell和文件

sql command-line sql-server-2005 sqlcmd

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

Visual Studio数据库部署 - 脚本未在SQLCMD模式下运行

我有一个SQL Server 2008数据库项目,我正在尝试使用Visual Studio 2010进行部署.当我单击部署时,构建工作正常,但在创建部署脚本并开始执行它之后,我收到以下错误:

错误8 SQL80001:'DatabaseName'不是可识别的选项.

错误7 SQL80001:':'附近的语法不正确.

查看部署脚本,它包含以下行:

:setvar DatabaseName"DEV_DB"

...

:出错时

因此,看起来SQL Server没有在SQLCMD模式下运行部署脚本来理解该语法.如果我正在复制并粘贴到SSMS中,我可以设置该选项,但我想直接从Visual Studio进行部署.哪里有VS运行SQLCMD模式这个脚本设置如何设置的脚本中使用SQLCMD语法不产生?

谢谢.

sqlcmd database-project visual-studio-2010 database-deployment sql-server-2008

5
推荐指数
0
解决办法
2660
查看次数

我需要在T-SQL中将数据导出到CSV(带有标头)中的最佳做法

我需要做的是使用T-SQL将数据导出到CSV文件中。

我很困惑有很多方法可以做到,我不知道选择哪种方法,请帮助我确认以下内容:

据我了解,大约有3种方法,希望您能帮助我确认一下:

使用Microsoft.Jet.OLEDB.4.0,如下所示:

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                       'Text;Database=C:\Temp\;HDR=Yes;',
                       'SELECT * FROM test.csv')
            (object_id, name)
SELECT object_id, name
  FROM sys.tables;
Run Code Online (Sandbox Code Playgroud)

但这需要csv文件存在,并且带有标头

使用SQLCMD

命令行。

使用BCP

使用联合,获取数据及其列标题。

这是我对将T-SQL导出到CSV的全部理解,请帮助我确认。

还有其他导出到CSV的方法吗?

谢谢!

sql t-sql csv sqlcmd sql-agent-job

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

使用方法:setvar正常吗?

我使用以下命令调用几个sql文件:

:r C:\Scripts\Script1.sql
:r C:\Scripts\Script2.sql
:r C:\Scripts\Script3.sql
Run Code Online (Sandbox Code Playgroud)

我对这里的:r调用有这个想法:TransactSQL运行另一个TransactSQL脚本.该Script1.sql脚本也可能在其代码中有其他sql脚本调用等.

但现在我想为每个脚本定义设置.例如:我在调用之前定义LastInsertedID并将其设置为SCOPE_IDENTITY()right 的值Script1.sql.此脚本现在使用此变量并使用它.

为此,我使用了sqlcmd脚本变量(http://msdn.microsoft.com/de-de/library/ms188714.aspx)并使用以下方法设置它们:

:setvar LastInsertedID SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)

然后我可以写入SELECT $(LastInsertedID,Script1.sql它会给我正确的价值.

后来我发现这根本不正确,因为如果你INSERT在选择之前处理其他语句,$(LastInsertedID)它会给你新插入的行的ID.这可能是这种情况,因为:setvar不保存该当前值,SCOPE_IDENTITY()而是保存对它的引用,并在请求后再次调用它.

所以我尝试了一些不同的东西并声明了一个变量,为它赋予了当前值,SCOPE_IDENTITY()然后将其保存:setvar.它看起来像这样:

DECLARE @LastInsertedID int
SELECT @LastInsertedID = SCOPE_IDENTITY()
:setvar LastInsertedID @LastInsertedID
PRINT $(LastInsertedID)
Run Code Online (Sandbox Code Playgroud)

这再次起作用,并提供了正确的结果.但后来我将我的代码分成多个GO部分,并意识到:setvar再次提供的不是所需的输出.

当您在之前的示例中插入GO之后:setvar:

DECLARE @LastInsertedID int
SELECT @LastInsertedID = SCOPE_IDENTITY()
:setvar LastInsertedID @LastInsertedID …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sqlcmd

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

Get-Member中的ForEach属性

我在powershell脚本中有以下代码片段

    $sqlHDR = "SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=" + $dir + $m + ".xls;HDR=NO','SELECT * FROM [" + $y + "`$B1:Z1]')"
    $doHDR = invoke-sqlcmd -query $sqlHDR -ServerInstance $sqlserver -Database $db

    $doHDR | get-member -membertype properties
Run Code Online (Sandbox Code Playgroud)

这是循环遍历数百个Excel电子表格的循环的一部分.结果是从F1到F*n*(n是未知的最终列号)的动态变化列集,其仅具有一行,每行具有单个值.

我想知道我是否可以使用get-member以某种方式遍历数据集中的列以获取对字段中值的访问权限?或者我完全倒退了,是否有更好的方法来循环单个数据行中的值?

或者有没有办法循环通过属性名称本身?

非常感谢!

powershell foreach sqlcmd

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

sqlcmd不显示RESTORE数据库状态

cmd窗口中的以下命令

sqlcmd -S. -Usa -Ppass -dmaster -Q "RESTORE DATABASE [MYDATABASE] FROM DISK = 'D:\SQL Server\MYDATABASE.BAK' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10"
Run Code Online (Sandbox Code Playgroud)

显示以下输出:

10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 32320 pages for database 'MYDATABASE', file 'MYDATABASE' on file 1.
Processed 7 pages for database 'MYDATABASE', file 'MYDATABASE_log' on file 1.
Run Code Online (Sandbox Code Playgroud)

但是事实是,仅整个还原 …

t-sql progress sqlcmd database-restore sql-server-2012

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

sqlcmd如何针对特定数据库运行查询?

所以这是我想要运行的查询

sqlcmd -E -S localhost\MSSQLSERVER_2016 -i C:\Tables.sql
Run Code Online (Sandbox Code Playgroud)

我在这个实例中有多个数据库,当上面的命令运行时,我不知道它运行查询的数据库.有什么方法可以使用sqlcmd来运行我希望它运行的数据库?

我也试过了

sqlcmd -E -S localhost\MSSQLSERVER_2016.mydatabase -i C:\Tables.sql
Run Code Online (Sandbox Code Playgroud)

但那没用.

sql sqlcmd

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