小编Han*_*non的帖子

SQL Server 2014 LocalDB 中的 SQLCMD.EXE 在哪里或如何安装?

在安装了 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 sqlcmd sql-server-localdb

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

安装旧版本 SQL Server 的实例

在安装较新版本后安装以前版本的 SQL Server 实例时,是否有任何需要注意的问题?例如,将 2008 安装到具有现有 2012 实例的服务器上?

我找不到特定于这种情况的陈述,但这似乎有风险。

sql-server instance installation

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

重新启动主动节点服务而不进行故障转移

在 2 节点 Windows Server 故障转移群集配置中,如何重新启动 SQL Server 服务而不故障转移到其他节点?

windows clustering failover high-availability

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

如何避免在“匹配时更新”子句中重复相同的条件?

我想将一张表合并到另一张表中。我需要在我的 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 操作。 …

sql-server update merge

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

为什么请求 sp_delete_job 的“估计执行计划”会抛出错误?

我正在尝试查看以下 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 sql-server-agent

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

一个打开的事务回滚的所有方式是什么?

当一个事务在 SQL Server 中打开时,它可以回滚的所有方式是什么?我们目前正在使用一个 3rd 方应用程序,该应用程序经常在查询处于睡眠状态时显示打开的事务,有时会持续数天(通过 sp_WhoIsActive 显示)。这使我相信应用程序中某处存在错误,不允许提交事务。这些事务可能回滚的所有方式是什么?

  1. 客户端超时(如果指定)
  2. 客户端关闭或重新启动应用程序
  3. 手动终止 SPID
  4. 还要别的吗?

我应该对已经打开数小时或数天的交易做些什么吗?如果他们无论如何都要回滚或超时,那么终止进程有什么害处吗?

sql-server transaction rollback connectivity

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

一个位置的最小距离;一个点表与一组点 SQL 2012 相比

我试图找到找到一个点到点表的最小距离的最快方法。唯一需要注意的是,我试图找到最小距离的点表是 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 …

sql-server t-sql sql-server-2012 spatial

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

在 case 子句中使用默认值更新

我有一张像

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

sql-server sql-server-2014

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

避免循环/多个更新路径的首选设计

考虑以下设计:

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)

用例:

  • 农民乔拥有土地。
  • 农民泰德拥有土地。 …

database-design sql-server referential-integrity

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

向唯一约束添加条件

我目前对表有以下约束:

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基本上可以归档多行相同的行,但只能取消归档一行。

postgresql

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