标签: sqlcmd

shell脚本循环中的sqlcmd

嗨,我有一个 shell 脚本,可以在 SQL 服务器中插入 linux 服务器的磁盘状态。在插入 SQL 命令之前,程序会正确执行并结束。但是,当我插入 SQL 命令时,.sh 文件永远不会转到下一行执行。它始终处于循环中。请帮忙

#!/bin/bash

#Functions here
insert() {
echo "--INSERT FUNCTION--"
echo "$1"

fsname=$1
fs=$(echo "${fsname: -3}")

 sqlcmd -S <ipadd> -U <user> -P <pass> -d tech_admin -Q "EXEC insertDiskStatus $fs"
sleep 1

}
echo "TEST"
cd ~/Documents
pwd
df -Ph --exclude-type=tmpfs --exclude-type=ext3 --block-size=GB | column -t |         sed 1d > diskspace.log
filename=diskspace.log

while read -r line
do
 this=$line

 fs=$(echo $line | awk '{print $1}')

 insert $fs 

done < "$filename"
Run Code Online (Sandbox Code Playgroud)

linux shell sqlcmd

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

删除数据库但不删除*.mdf/*.ldf

我正在尝试自动化分离和删除数据库的过程(通过VBS objshell.run)如果我手动使用SSMS分离和删除我可以将数据库文件复制到另一个位置...但是,如果我使用:

sqlcmd -U sa -P MyPassword -S (local) -Q "ALTER DATABASE MyDB set single_user With rollback IMMEDIATE"
Run Code Online (Sandbox Code Playgroud)

然后

sqlcmd -U sa -P MyPassword -S (local) -Q "DROP DATABASE MyDB"
Run Code Online (Sandbox Code Playgroud)

它分离/删除然后删除文件.如何在没有删除的情况下获取分离和删除?

sql sqlcmd sql-server-2008

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

如何使用 nowait 使 raiserror 与 sqlcmd 一起工作?

这是命令行:

sqlcmd -S localhost -U myuser -P mypwd -b -r0 -Q "raiserror('hello',10,1) with nowait;waitfor delay '00:00:10';raiserror('world!',10,1) with nowait"
Run Code Online (Sandbox Code Playgroud)

它应该立即输出hello,然后在 10 秒后输出world!. 不幸的是,它会在 10 秒后输出两个字符串。

sqlcmd 可以做对吗?如何?

聚苯乙烯

我不想为此使用 LinqPad 或任何 GUI。

sql-server sqlcmd sql-server-2012

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

Sql DataReader 有行但返回空数据

我正在使用查询从 sql 数据库中选择数据。它有行,但数据raader.Read()函数返回false并且行为空,正如我在调试中检查的那样

调试图

我一直在使用的代码是

public void getSale()
    {
        DB db = new DB();

        try
        {
            db.cmd.CommandText = "select * from Sale where date is not null and (date between '"+StartDate+"' and '"+EndDate+"') order by date";
            db.cmd.Connection = db.con;
            db.con.Open();

            if(db.con.State == System.Data.ConnectionState.Open)
            {
                db.dataReader = db.cmd.ExecuteReader();

                if(db.dataReader.HasRows)
                {
                    while(db.dataReader.Read())
                    {
                        SaleModel sm = new SaleModel();
                        sm.SaleId = long.Parse(db.dataReader["Id"].ToString());
                        sm.UserName = db.dataReader["UserName"].ToString();
                        sm.ItemsQuantity = int.Parse(db.dataReader["ItemsQuantity"].ToString());
                        sm.TotalAmount = double.Parse(db.dataReader["TotalAmount"].ToString());
                        sm.SubTotal = double.Parse(db.dataReader["SubTotal"].ToString());
                        sm.Discount = double.Parse(db.dataReader["Discount"].ToString());
                        sm.Completed = bool.Parse(db.dataReader["Completed"].ToString()); …
Run Code Online (Sandbox Code Playgroud)

c# sql database sql-server sqlcmd

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

我可以在 Visual Studio 数据库项目存储过程中使用 SQLCMD 命令吗?

我有很多 SQL 在多个存储过程中是相同的。

例如,大多数过程都声明了相同的变量,并在同一个 try catch 块中处理错误。

我想使用该:r命令,以便我可以在一个文件中编写此代码,然后将其导入每个 sp。我可以在构建前和构建后脚本中使用该命令,但无法在普通的“构建”类型数据库对象中使用它。

例子:

在此处输入图片说明

内的 SQL \Shared\CommonVariables

在此处输入图片说明

[p_An_Example]

在此处输入图片说明

错误只是说“SQL46010:\ 附近的语法不正确。”

——

如果我将路径用引号括起来,则错误将在“开始”上替换为一个:

在此处输入图片说明

“SQL46010:BEGIN 附近的语法不正确。”

——

有什么我可以做的事情吗?目前[p_An_Example]具有BuildBuild Action 属性,并\Shared\CommonVariables设置为None.

(我使用的是 Visual Studio 2017,数据库项目指向 2008 数据库,安装了 SQLCMD 等)

编辑:不是重复,因为我确实打开了 SQLCMD 模式...但事实证明 SQLCMD 命令在存储过程语句中不可用

t-sql sql-server sqlcmd database-project visual-studio

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

如何从 sqlcmd 提示符运行单个 sql 命令?

在 SQL Server 中,如果我想从命令行运行脚本,我可以这样做

/opt/mssql-tools/bin/sqlcmd -S $DB_HOST -U $DB_USER -P $DB_PASS -d $DB_NAME -i myscript.sql
Run Code Online (Sandbox Code Playgroud)

是否可以在没有脚本的情况下仅运行单个命令并获得结果?例如,如果我只是想跑

SELECT 1
Run Code Online (Sandbox Code Playgroud)

我该如何从命令行执行此操作?

sql-server command-line sqlcmd

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

SQL脚本命令行参数

有没有办法获得将通过SQLCMD执行的脚本文件,以接受在SQLCMD调用中传递的parms.

即..

SQLCMD(假设连接正常..) - V"1/25/2012"-i"ScriptFile.sql"

ScriptFile.sql的结构会是什么样的?它会以与任何其他程序相同的方式开始吗?

基本上我正在尝试使用参数作为SQL命令调用文本文件脚本.到目前为止,我还没有找到任何MSDN文章.

sql-server command-line sqlcmd

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

从sqlcmd运行kill命令

我正在尝试通过以下方式取消进行中的会话...

C:\>sqlcmd -E -S %COMPUTERNAME%\INSTANCE -Q "kill (SELECT session_id FROM sys
.dm_exec_sessions WHERE login_name = 'dbuser')"
Run Code Online (Sandbox Code Playgroud)

如何使其运作...

sql-server sqlcmd

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

批处理文件中的错误级别无法正常工作

我正在尝试使用带有批处理脚本的sqlcmd删除数据库.我遇到的问题是如果myql数据库在sql中不可用,则代码不会进入错误处理程序块.

@echo off
@echo IF ELSE DEMO
sqlcmd -S <servername> -U <username> -P <password> -Q "DROP DATABASE Mytest"  
IF ERRORLEVEL 1 goto err_handler
goto done

:err_handler
echo handle the error here
goto end

:done 
echo script completion code here

:end
@echo %Message%
pause
Run Code Online (Sandbox Code Playgroud)

它给出了以下输出:

IF ELSE DEMO
Msg 3701, Level 11, State 1, Server HERCULES, Line 1
Cannot drop the database 'Mytest', because it does not exist or you do not have permission.
script completion code here
ECHO is off. …
Run Code Online (Sandbox Code Playgroud)

batch-file sqlcmd

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

在批处理文件中使用SQLCMD,如何解析响应并检查错误?

我正在使用SQLCMD来获取表中的行数,但我也想知道查询是否遇到错误.

我使用的sqlcmd看起来像这样:

sqlcmd -S %server% -U %user% -P %pass% -b -Q "select count(*) from %table%"
Run Code Online (Sandbox Code Playgroud)

如果有效,它将返回:

-----------
      10205

(1 rows affected)
Run Code Online (Sandbox Code Playgroud)

(注意,-------上面有一个空行,我没有指定列名.)

如果我传入一个不存在的表,我得到以下响应:

Msg 208, Level 16, State 1, Server devServer, Line 1
Invalid object name 'dbo.no_table'.
Run Code Online (Sandbox Code Playgroud)

由于我有-b标志,我可以检查ERRORLEVEL的值(在本例中为1).

要存储count变量,我一直在使用以下行:

for /F %%i in ('sqlcmd -S %server% -U %user% -P %pass% -b -Q "select count(*) from %table%" ^| findstr /r "[^(][0-9]"') do SET /a rec_count=%%i
Run Code Online (Sandbox Code Playgroud)

在for之后,%errorlevel%返回0.即使在do内,errorlevel也是0.

是否有任何简单的方法来运行sqlcmd,如果没有错误则存储计数,如果有错误则打印两行?

sql-server batch-file sqlcmd

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