我不是第一个注意到缺少此功能的人。
但我想知道是否有一些有用的解决方法。我想在同一个文件夹中部署一个主脚本和一些依赖脚本。
顺便说一句,Microsoft Connect 上有票吗?
编辑:
锁定于此,似乎等同于在 sqlcmd 模式下运行的脚本是否可以确定其在文件系统中的路径的问题。
第二次编辑:
从SO我找到了一种将脚本路径传递到 sqlcmd 的方法
sqlcmd -S myServer -d myDB -U user -P password -i file1.sql -v p1="D:\myscripts"
Run Code Online (Sandbox Code Playgroud)
我可以验证它是否传递给 File1.sql
PRINT '$(p1)'
:setvar path1 $(p1) + '\file1.sql'
:r $(path1)
Run Code Online (Sandbox Code Playgroud)
但是我没有找到在第二行中连接路径和文件名的正确方法。
第三次编辑: 我在这里找到了连接路径和文件名的解决方案。
PRINT '$(p1)'
:r $(p1)\file1.sql
Run Code Online (Sandbox Code Playgroud)
还有更好的方法吗?
我不认为“只是为了确保脚本不需要 sqlcmd-mode”是一个正当理由。
在向我的同事发出启用此设置的命令之前需要考虑什么?
我配置了一个作业,它在远程位置传输文件。
我的命令在命令提示符下运行得非常好,但是当我在 sql server 作业中配置它时,它会导致登录失败未知用户名或密码错误。
我无法找出未传输此文件的确切原因。
如果我的代码中有错误,那么它应该在命令提示符下给出相同的错误。谁能帮助我理解为什么我会收到错误?
在安装了 SQL Server LocalDB 2014 的机器上,我正在寻找 SQLCMD.EXE 文件,但在任何地方都找不到它。有没有办法单独安装?
不幸的是,我不是机器的本地管理员,所以我不喜欢 MSI ...
找到此链接https://www.microsoft.com/en-us/download/confirmation.aspx?id=36433,但不能使用 MSI ... 也许复制可执行文件和 dll 可以解决问题。
C:\Program Files\Microsoft SQL Server\110\Tools\Binn 从安装了 SSMS 的另一台计算机复制文件 SQLCMD.EXE、BATCHPARSER.DLL 和 SQLCMD.RLL 后,我仍然收到错误:
Microsoft SQL Server Native Client 11.0:未找到数据源名称且未指定默认驱动程序。
运行sqlcmd -S np:\\.\pipe\LOCALDB#F8040C8F\tsql\query。
我在 RHEL7 VM 上安装了 SQL Server
msodbcsql-13.1.1.0-1.x86_64
mssql-server-14.0.100.187-1.x86_64
mssql-tools-14.0.2.0-1.x86_64
# ls -al /opt/
total 4
drwxr-xr-x. 5 root root 52 Jan 13 08:31 .
drwxr-xr-x. 17 root root 4096 Jan 13 07:55 ..
drwxr-xr-x. 3 root root 22 Jan 13 08:31 microsoft
drwxr-xr-x. 4 root root 26 Jan 13 08:14 mssql
drwxr-xr-x. 4 root root 28 Jan 13 08:31 mssql-tools
Run Code Online (Sandbox Code Playgroud)
systemctl 表示 SQL 服务器已启动并正在运行 / 绿色
# systemctl status mssql-server
mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; …Run Code Online (Sandbox Code Playgroud) 我有以下脚本:
-- available space in each of the database files
PRINT @@SERVERNAME
--SQLDWDEV01
USE [BodenStage]
GO
SELECT name
,(CAST(ROUND((size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0),2) AS NUMERIC(18,2))) AS AvailableSpaceInMB
,(CAST(ROUND((size/128.0 - FILEPROPERTY(name, 'SpaceUsed')/128.0)/1024.00,2) AS NUMERIC(18,2))) AS AvailableSpaceInGB
FROM sys.database_files;
GO
Run Code Online (Sandbox Code Playgroud)
尽管我不喜欢既不收缩数据也不收缩日志文件,但有时需要这样做。不是我的错。
有方法,以缩小数据文件,而无须描述累积碎片在这里:
仅截断
将文件末尾的所有可用空间释放给操作系统,但不会在文件内执行任何页面移动。数据文件仅收缩到最后分配的范围。
如何将DBCC SHRINKFILE的结果保存到表中?
请参见下文,这是将DBCC SQLPERF的结果保存到表中的一种方法。
select @@servername as [Server]
,db_name() as [database]
go
SET NOCOUNT ON
begin try
drop table #radhe
end try
begin catch
end catch
create table #radhe …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Linux Ubuntu 16.04 计算机连接到 SQL Server Express 服务器。我为 linux 机器安装了所有 SQL 命令行实用程序,并按照 Linux 文档上的 Microsoft SQL Server 的说明进行操作。
当我跑
sqlcmd -S ip/SQLEXPRESS -U SA -P 1234
Run Code Online (Sandbox Code Playgroud)
该命令总是返回以下错误:
适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:登录超时已过期。
适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:TCP 提供程序:错误代码 0x2AF9
我能够从 Windows 10 计算机运行相同的命令,并且没有任何缺陷。
linux 计算机可以与服务器机器和 SQL Server 1433 端口进行通信。我使用 linux nc 命令 (netcat) 对此进行了测试。
Linux nc 命令结果:
nc -z -v -w5 192.168.0.1 1433
Run Code Online (Sandbox Code Playgroud)
连接到 192.168.0.1 1433 端口 [tcp/ms-sql-s] 成功!
有什么建议或缺少什么吗?
我曾尝试更改端口、参数顺序等……但 Linux 版本 …
如何列出/查看sqlcmd历史记录?
Mysql、Postgresql 和 sqlite 写入点文件:.mysql_history, .psql_history and .sqlite_history.
在使用 mssql/sql-server 时,我正在寻找等效(或近似值)。
谢谢。
我在单用户模式下启动了 SQL Server,如下所示: c:\....\sqlservr -m
当我尝试使用 连接到它时SQLCMD -E,出现以下错误:
Msg 18461, Level 14, State 1, Server SERVERNAME, Line 1
Login failed to user 'USER\Name'. Reason: Server is in single user mode. Only one administrator can connect at this time.
Run Code Online (Sandbox Code Playgroud)
我以域管理员身份登录到服务器的用户。
在我尝试之前,我登录的用户与此 SQL 服务器无关。(事实上,我正在尝试创建一个新的 SA,因为我们不知道当前密码是什么)
编辑
似乎即使我这样做:
c:\....\sqlservr -m"sqlcmd"
Run Code Online (Sandbox Code Playgroud)
我仍然收到上述错误。我不确定其他SQLCMD地方是否还有其他电话。
我是 sqlcmd 的新手,我想创建一个新用户。我做了以下工作:
1> CREATE LOGIN FYI_DBA WITH PASSWORD = 'V_2017'
2> go
1> CREATE USER FYI_DBA FOR LOGIN FYI_DBA
2> go
Run Code Online (Sandbox Code Playgroud)
然后在 cmd 提示符下我运行了以下命令:
sqlcmd -s LOCALHOST -U 'FYI_DBA' -P 'V_2017'
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user ''FYI_DBA''..
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
sql-server ×10
sqlcmd ×10
linux ×2
connectivity ×1
dbcc ×1
pivot ×1
ssms ×1
timeout ×1
unixodbc ×1
xp-cmdshell ×1