当我从带有SQL Server 2008的Windows XP中的DOS窗口执行以下命令时出现错误.-S是指定服务器名称的选项.
错误:Sqlcmd:' - S':未知选项.
sqlcmd -S localhost -d databasename -i C:\ files\somefile.sql -E
SQLCMD默认使用Windows身份验证.根据MSDN文档,您可以通过向命令添加-U参数然后使用用户名来更改它.
问题在于密码.如果密码为空,有没有办法访问sql server?
sqlcmd -U admin
password:
Run Code Online (Sandbox Code Playgroud)
每当我尝试这个并按Enter键(表示密码为空字符串)时,我会收到一条消息,说明登录失败.
有什么建议?谢谢
当我select '$(''test'')'在SQL Management Studio 2008中运行它时,它返回$('test')
当我sqlcmd -S SERVER -E -d DATABASE -q "select $(''test'')"在命令行上运行它返回Sqlcmd: Error: Syntax error at line 1 near command '''.
如果我删除美元符号就行了."$"是一个特殊角色吗?
这是一个sqlcmd错误吗?如何更改脚本以获得所需的结果.
我正在尝试使用sql cmd执行包含以下内容的sql文件.
sqlcmd -S localhost\dbInstance -i Sample.sql -v filepath="C:\Sql\"
Run Code Online (Sandbox Code Playgroud)
Sample.sql内容:
USE Sample_db
GO
BEGIN
BEGIN TRANSACTION;
BEGIN TRY
CREATE VIEW [dbo].[Test_View]
AS SELECT * from Sample_table;
ALTER VIEW [dbo].[Sample_View]
AS SELECT * FROM table_9;
ALTER TABLE [Sample_Table_2] ADD Col_4 VARCHAR(20);
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber ,
ERROR_SEVERITY() AS ErrorSeverity ,
ERROR_STATE() AS ErrorState ,
ERROR_PROCEDURE() AS ErrorProcedure ,
ERROR_LINE() AS ErrorLine ,
ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0 …Run Code Online (Sandbox Code Playgroud) 我正在编写一个批处理脚本,用于SQLCMD将表从数据库服务器转储到本地计算机上.为此,我构造了查询,以便我可以灵活地指定表名.根据表名构造查询,然后在SQLCMD命令中使用该表名.用于构造查询的代码段如下所示:
@echo off
SET tableName = testDB
SET dumpTable="SET NOCOUNT ON; SELECT * FROM %tableName%"
ECHO %dumpTable%
Run Code Online (Sandbox Code Playgroud)
在运行此脚本时,我得到以下输出
"SET NOCOUNT ON; SELECT * FROM "
Run Code Online (Sandbox Code Playgroud)
该tableName变量未在set语句中替换.我应该如何修改我的脚本来实现此输出:
"SET NOCOUNT ON; SELECT * FROM testDB"
Run Code Online (Sandbox Code Playgroud) 我认为在 T-SQL 运行时设置 SSMS 输出文件路径的最佳方法是使用 SQLCMD 模式。如何在代码中使用环境变量(例如 %systemroot%)?以下炸弹:
:set mypath %systemroot%
:out $(mypath)"\the_result.txt"
select * from myTab
Run Code Online (Sandbox Code Playgroud)
也许还有: Query.sql 的文件夹是否有环境变量与此代码,或工作文件夹?谢谢!
在SQLCMD模式下的MS SQL Server Management Studio中,我使用以下脚本来运行另一个脚本:
:setvar path "C:\workspace\scripts\scripts\"
:r $(path)'VERSIONS.sql'
Run Code Online (Sandbox Code Playgroud)
但是它得到了这个错误:
发生致命的脚本错误。找不到为:r命令指定的文件。
VERSIONS.SQL绝对在指定的文件夹中。为什么在运行该脚本时不起作用?
编辑:要注意的事情。我运行该脚本所针对的数据库不在本地计算机上。(我希望这不是不起作用的原因)
FOR /f "delims=" %%a IN ('"%SQLCMD%" -E -S %Server% -d %DestDb% -h-1 -i GetResult.sql') do (
SET Result=%%a
)
ECHO "%Result%"
Run Code Online (Sandbox Code Playgroud)
%Result% 设置为实际结果的前 256 个字符。
有没有办法获得查询的整个输出?
我正在尝试使用以下命令备份 sql server 上的数据库:BACKUP DATABASE [mydb] TO DISK = N'/path/to/file.bak' WITH NOFORMAT, NOINIT, NOSKIP, REWIND, NOUNLOAD, STATS = 10
如果路径/var/opt/mssql/data/file.bak无法在任何其他位置创建备份,则它会创建备份。这是权限问题吗?有没有人遇到过同样的情况?提前致谢。
我已经阅读了许多关于该错误的帖子和文章:
共享内存提供程序:管道的另一端没有进程。通信链路故障。
...包括这些:
错误消息:(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程。)
我可以轻松且始终通过 SSMS 进行连接,包括混合模式和 Windows 身份验证。但是每当我尝试通过 运行 sql 脚本时sqlcmd.exe,都会出现上面显示的错误。
这是我从 Windows 命令外壳运行的内容:
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\sqlcmd.exe" -S localhost -U sa -P myPassword -i "F:\<mypath>\<myfile>.sql"
Run Code Online (Sandbox Code Playgroud)
这是我尝试/验证的内容:
SQL Server version 14.0在 Windows 10 上。127.0.0.1而不是localhost在我的 cmd 行中。sqlcmd ×10
sql-server ×4
batch-file ×2
sql ×2
ssms ×2
t-sql ×2
cmd ×1
command-line ×1
ubuntu ×1
windows ×1