在安装了 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。
在安装较新版本后安装以前版本的 SQL Server 实例时,是否有任何需要注意的问题?例如,将 2008 安装到具有现有 2012 实例的服务器上?
我找不到特定于这种情况的陈述,但这似乎有风险。
在 2 节点 Windows Server 故障转移群集配置中,如何重新启动 SQL Server 服务而不故障转移到其他节点?
我想将一张表合并到另一张表中。我需要在我的 WHEN MATCHED 子句中应用条件逻辑,理想情况下这样做:
MERGE INTO ATable AS a
USING BTable AS b
ON a.ID = b.ID
WHEN NOT MATCHED THEN
-- Do insert
WHEN MATCHED AND b.NeedsAdjustment = 1 THEN
UPDATE SET
Col1 = b.Col1 + b.Adjustment
,Col2 = b.Col2 + b.Adjustment
,Col3 = b.Col3 + b.Adjustment
WHEN MATCHED THEN -- Default case (b.NeedsAdjustment <> 1)
UPDATE SET
Col1 = b.Col1
,Col2 = b.Col2
,Col3 = b.Col3
Run Code Online (Sandbox Code Playgroud)
这不是有效的 SQL。根据 MSDN 文档:
如果有两个 WHEN MATCHED 子句,则一个必须指定 UPDATE 操作,一个必须指定 DELETE 操作。 …
我正在尝试查看以下 T-SQL 语句的估计执行计划:
EXEC msdb.dbo.sp_delete_job @job_id = '3A015189-F4EB-439B-9CA0-27AFB74719D8'
, @originating_server = '(LOCAL)'
, @delete_history = 0
, @delete_unused_schedule = 0;
Run Code Online (Sandbox Code Playgroud)
当我这样做时,SQL Server 抛出以下错误:
消息 213,级别 16,状态 1,过程 sp_delete_all_msx_jobs,第 25 行
列名或提供的值数量与表定义不匹配。
的定义sp_delete_all_msx_jobs包含以下相关行,从第 25 行开始(为了可读性而包装):
INSERT INTO #temp_jobs_to_delete
SELECT sjv.job_id,
CASE sjs.server_id WHEN 0 THEN 1 ELSE 0 END,
sjv.owner_sid
FROM msdb.dbo.sysjobs_view sjv
LEFT OUTER JOIN msdb.dbo.sysjobservers sjs
ON (sjv.job_id = sjs.job_id)
WHERE (ISNULL(sjs.server_id, 0) = 0)
AND (sjv.originating_server = @msx_server)
Run Code Online (Sandbox Code Playgroud)
该存储过程的第 14 行显示了#temp_jobs_to_deleteis的定义:
CREATE TABLE #temp_jobs_to_delete …Run Code Online (Sandbox Code Playgroud) 当一个事务在 SQL Server 中打开时,它可以回滚的所有方式是什么?我们目前正在使用一个 3rd 方应用程序,该应用程序经常在查询处于睡眠状态时显示打开的事务,有时会持续数天(通过 sp_WhoIsActive 显示)。这使我相信应用程序中某处存在错误,不允许提交事务。这些事务可能回滚的所有方式是什么?
我应该对已经打开数小时或数天的交易做些什么吗?如果他们无论如何都要回滚或超时,那么终止进程有什么害处吗?
我试图找到找到一个点到点表的最小距离的最快方法。唯一需要注意的是,我试图找到最小距离的点表是 150K 单点。
或者更好地解释表 A 有 150K 行/点,表 B 1500 点。我想知道表 A 中的每一行与表 B 中列出的所有行的最小距离是多少。
我有一个进行距离计算的函数,作为表 A 的附加列。它只需要很长时间。表 B 有一个空间索引。
这就是我所拥有的:
select a.*,
dbo.fxn_distance(geography::STPointFromText('POINT(' +
CAST([Long] AS VARCHAR(20)) + ' ' + CAST([Lat] AS
VARCHAR(20)) + ')', 4326)) as DistAway
from Table A a
Run Code Online (Sandbox Code Playgroud)
我的功能:
create function fxn_distance
(@pointTableA geography
)
returns float
as
begin
declare @distance float
select top 1 @distance = b.GeoLocation.STDistance(@pointTableA)
from TableB b
where geolocation.STDistance(@pointTableA) is not null
order by geolocation.STDistance(@pointTableA)
return @distance
end
Run Code Online (Sandbox Code Playgroud)
对不起,如果我完全是一个新手,我知道解决方案可能很简单,但我无法解决这个问题。所以希望澄清一下:我需要通过表 A …
我有一张像
CREATE TABLE Mytable (ID int identity, Name nvarchar(10));
GO
INSERT INTO MyTable (Name) VALUES ('test1');
INSERT INTO MyTable (Name) VALUES ('test2');
GO
ALTER TABLE MyTable ADD CONSTRAINT DF_Name DEFAULT('test') FOR Name;
Run Code Online (Sandbox Code Playgroud)
现在我想像这样更新我的 Name 列:
Update MyTable
set name = case ID when 1 then DEFAULT END;
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
关键字“DEFAULT”附近的语法不正确
如何在子句中使用UPDATEwithDEFAULT语句CASE?
考虑以下设计:
CREATE TABLE dbo.Farmers
(
FarmerName varchar(10) NOT NULL
PRIMARY KEY
);
CREATE TABLE dbo.FarmEquipment
(
FarmEquipmentName varchar(10) NOT NULL
PRIMARY KEY
, CreatorFarmer varchar(10) NOT NULL
FOREIGN KEY REFERENCES dbo.Farmers(FarmerName)
ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE TABLE dbo.Fields
(
FieldName varchar(10) NOT NULL
, OwnerFarmer varchar(10) NOT NULL
FOREIGN KEY REFERENCES dbo.Farmers(FarmerName)
ON UPDATE CASCADE
ON DELETE CASCADE
, FarmEquipment varchar(10) NOT NULL
FOREIGN KEY REFERENCES dbo.FarmEquipment(FarmEquipmentName)
ON UPDATE CASCADE
ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
用例:
我目前对表有以下约束:
ALTER TABLE myTable
ADD CONSTRAINT unique_row UNIQUE (content_id, brand_id, language_id);
Run Code Online (Sandbox Code Playgroud)
我想向约束添加一个条件:我希望约束以相同的方式工作,但只有一行 is_archived 为 FALSE:
ALTER TABLE myTable
ADD CONSTRAINT unique_row UNIQUE (content_id, brand_id, language_id, !is_archived);
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到语法错误。
如果则允许is_archived = true具有相同的content_id和组合的多行。brand_id基本上可以归档多行相同的行,但只能取消归档一行。
sql-server ×8
clustering ×1
connectivity ×1
failover ×1
installation ×1
instance ×1
merge ×1
postgresql ×1
rollback ×1
spatial ×1
sqlcmd ×1
t-sql ×1
transaction ×1
update ×1
windows ×1