标签: sql-server-2014

尝试重命名SSMS中的DB /表时,Delete键是否正常?

我尝试在SSMS 2014(已应用CU6)中重命名数据库或表,方法是在对象资源管理器中单击并选择数据库或表,然后按F2编辑名称.键盘上的Delete键不会删除光标右侧的字符或任何选中的字符.

这只是我的问题,还是我发现了一个错误?

sql-server ssms sql-server-2014 ssms-2014

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

为什么外部连接比单独的查询更慢

我有一个基本上看起来像这样的查询:

Select *
From UserSearches us
left outer join Quotes q on q.UserSearchId = us.Id and q.QuoteNumber is not null
left outer join ContainerDetails cd on cd.QuoteId = q.Id
left outer join Surcharges s on s.ContainerDetailId = cd.Id
where us.SearchDate between @beginDate and @endDate
Run Code Online (Sandbox Code Playgroud)

给定@beginDate和@endDate的某些值,我有一个搜索需要30秒才能返回大约100K行.

最终目标是填充一些具有父子孩子关系的对象.经过一些实验,我发现我可以通过以下方式大大加快查询速度:

Select *
From UserSearches us
left outer join Quotes q on q.UserSearchId = us.Id and q.QuoteNumber is not null
left outer join ContainerDetails cd on cd.QuoteId = q.Id
where us.SearchDate between @beginDate and @endDate …
Run Code Online (Sandbox Code Playgroud)

sql sql-server query-optimization sql-server-2014

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

在T-SQL中运行乘法

GTS表

CCP months   QUART   YEARS  GTS
----  ------  -----    ----- ---
CCP1    1       1   2015    5
CCP1    2       1   2015    6
CCP1    3       1   2015    7
CCP1    4       2   2015    4
CCP1    5       2   2015    2
CCP1    6       2   2015    2
CCP1    7       3   2015    3
CCP1    8       3   2015    2
CCP1    9       3   2015    1
CCP1    10      4   2015    2
CCP1    11      4   2015    3
CCP1    12      4   2015    4
CCP1     1      1   2016    8
CCP1     2      1   2016 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2012 sql-server-2014

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

IsNumeric失败并显示"当前命令发生严重错误".SQL Server 2014 CTE

我正在运行一系列生成数据库的脚本.它们在SQL Server 2012(11.0.5058.0)上运行完成.在SQL Server 2014(12.0.4213.0)上,脚本错误:

消息0,级别11,状态0,行0
当前命令发生严重错误.结果(如果有的话)应该被丢弃.

消息0,级别20,状态0,行0
当前命令发生严重错误.结果(如果有的话)应该被丢弃.

看来,IsNumeric在CTE查询中使用语句的结果会破坏查询构建,因为不需要行来导致错误.我遇到的案例的简化版本是:

CREATE TABLE #Temp1 ( CTECol VARCHAR );
CREATE TABLE #Temp2 ( NumCol Int null);
;
WITH cte AS 
(
    SELECT 
        CASE WHEN ISNUMERIC(t.CTECol) = 1 
                THEN 1 
                ELSE null
        END as IsNCol1
    FROM
        #Temp1 t
)
SELECT * 
FROM #Temp2 
JOIN cte ON #Temp2.NumCol = cte.IsNCol1
Run Code Online (Sandbox Code Playgroud)

我能找到的最简单的案例是:

CREATE TABLE #Temp3 ( CTECol Int );
CREATE TABLE #Temp4 ( NumCol Int );
;
WITH cte AS 
(
    SELECT ISNUMERIC(t.CTECol) …
Run Code Online (Sandbox Code Playgroud)

sql-server isnumeric common-table-expression sql-server-2014

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

将文件流添加到现有表列

我有下表列:

[Content] [varbinary](max) NULL
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个文件流列,所以我试过:

alter table dbo.Files
  alter column Content add filestream
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Incorrect syntax near 'filestream'.  
Run Code Online (Sandbox Code Playgroud)

我也试过

alter table dbo.Files
  alter column Content varbinary(max) filestream not null
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

Cannot alter column 'Content' in table 'Files' to add or remove the FILESTREAM column attribute.
Run Code Online (Sandbox Code Playgroud)

如何将文件流添加到现有列?

t-sql sql-server sql-server-2014

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

无法删除视图“XXX”,因为它不存在或您没有权限

我们将服务器从 2005 年迁移到 2014 年,用户可以在 2005 年服务器中删除它但在 2014 年我们收到错误,因为没有权限或不退出我们已经授予相同的权限,甚至他是系统管理员。在我们的应用程序方面,他们无法删除应用程序用户通过我们数据库中的用户连接的视图,他拥有所有权限并且他是 sysyadmin

sql-server sql-server-2005 user-permissions sql-server-2014

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

按日期时间进行SQL分组,最大差异为x分钟

我在MS SQL Server中对数据集进行分组时遇到问题.

我的桌子看起来像

 # | CustomerID | SalesDate           | Turnover
---| ---------- | ------------------- | ---------
 1 | 1          | 2016-08-09 12:15:00 |  22.50
 2 | 1          | 2016-08-09 12:17:00 |  10.00
 3 | 1          | 2016-08-09 12:58:00 |  12.00
 4 | 1          | 2016-08-09 13:01:00 |  55.00
 5 | 1          | 2016-08-09 23:59:00 |  10.00
 6 | 1          | 2016-08-10 00:02:00 |   5.00
Run Code Online (Sandbox Code Playgroud)

现在我想将SalesDate差异与下一行的行分组最多为5分钟.因此第1行,第2行,第3行和第4行以及第5行和第6行都是一组.

我的方法是使用DATEPART()函数获取分钟并将结果除以5:

(DATEPART(MINUTE, SalesDate) / 5)
Run Code Online (Sandbox Code Playgroud)

对于第1行和第2行,结果将为3,并且此处的分组将完美地工作.但对于SalesDate的小时或甚至日期部分发生变化的其他行,结果不能用于分组.

所以这就是我被困住的地方.如果有人能指出我正确的方向,我真的很感激.

sql sql-server sql-server-2014

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

SQL Server数据工具2015安装错误

我正在尝试安装SQL Server数据工具 - Visual Studio 2015,但我一直收到"未指定的错误".

该日志文件位于https://drive.google.com/open?id=0B3CEKzS2Sw8OODNJOXZJVGRWQlU.

我已经安装了Visual Studio Professional 2015.

我想安装SSDT 2015,因为我的数据库最近从SQL Server 2008 R2迁移到2014,我需要使用SSIS.以前,我使用SQL Server商业智能开发工作室来创建我的DTS包,我仍然安装它来访问旧包.

我试图找到解决我问题的方法,但一切似乎都与VS 2013安装问题有关.

如果我需要提供更多信息,请告诉我.

这是链接日志文件中的相关部分.

[2308:24BC][2016-10-12T09:32:14]: Plan complete, result: 0x0
[2308:24BC][2016-10-12T09:32:14]: Apply begin
[287C:2C64][2016-10-12T09:32:14]: Creating a system restore point.
[287C:2C64][2016-10-12T09:32:21]: Created a system restore point.
[287C:2C64][2016-10-12T09:32:21]: Caching bundle from: 'C:\Users\JENMCC~1\AppData\Local\Temp\{2e9e05c8-ae49-4af6-9121-fa821d1b5334}\.be\SSDTSetup.exe' to: 'C:\ProgramData\Package Cache\{2e9e05c8-ae49-4af6-9121-fa821d1b5334}\SSDTSetup.exe'
[287C:2C64][2016-10-12T09:32:21]: Registering bundle dependency provider: {2e9e05c8-ae49-4af6-9121-fa821d1b5334}, version: 14.0.60923.0
[2308:28AC][2016-10-12T09:32:21]: Prompt for source of package: DotNet46, payload: DotNet46, path: U:\Downloads\Microsoft\SSDT\SSDT 2015\payload\neutral\NDP461-KB3102436-x86-x64-AllOS.exe
[2308:28AC][2016-10-12T09:32:21]: Acquiring package: DotNet46, payload: DotNet46, download from: https://go.microsoft.com/fwlink/?LinkId=715689 …
Run Code Online (Sandbox Code Playgroud)

ssis sql-server-2014 sql-server-data-tools visual-studio-2015

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

为什么选择top ...按索引列的顺序仍然排序?

我创建了以下索引来覆盖select top语句.

-- Column A, B have type of int
create unique index ix_ on T (A, B) with (data_compression = page) 
-- tried to create non-unique index too and the execution plan is the same

select top 20 A, B from T order by A, B -- 19 seconds
select top 20 A, B from T -- return result instantly
Run Code Online (Sandbox Code Playgroud)

但是,它仍然需要一段时间(我的桌子上有19万秒,有5000万行),执行计划显示还有"排序"?

执行计划显示

选择(成本:0%)←顶部(成本:0%)←平行(聚集流)(成本:0%)←排序(前N排序)成本:93%←索引扫描(非聚集)[T.ix_]成本:7%


执行计划

<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.2" Build="12.0.4100.1" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
  <BatchSequence>
    <Batch>
      <Statements>
        <StmtSimple StatementCompId="1" StatementEstRows="20" …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server indexing sql-server-2014

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

SQL Server - 删除所有不可打印的ASCII字符

我们最近从SQL Server 2012迁移到SQL Server 2014,我们所有的FOR XML代码都开始抛出有关不可打印的ASCII字符的错误.我写了这个可怕的函数来删除不可打印的ASCII字符作为快速修复.我想用更干净的东西代替它.有没有办法做到这一点?

ALTER FUNCTION [dbo].[remove_non_printable_chars]
(@input_string nvarchar(max))
RETURNS nvarchar(max)
BEGIN
    RETURN
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(@input_string,
        CHAR(1), ''),CHAR(2), ''),CHAR(3), ''),CHAR(4), ''),CHAR(5), ''),CHAR(6), ''),CHAR(7), ''),CHAR(8), ''),CHAR(9), ''),CHAR(10), ''),
        CHAR(11), ''),CHAR(12), ''),CHAR(13), ''),CHAR(14), ''),CHAR(15), ''),CHAR(16), ''),CHAR(17), ''),CHAR(18), ''),CHAR(19), ''),CHAR(20), ''),
        CHAR(21), ''),CHAR(22), ''),CHAR(23), ''),CHAR(24), ''),CHAR(25), ''),CHAR(26), ''),CHAR(27), ''),CHAR(28), ''),CHAR(29), ''),CHAR(30), ''),
        CHAR(31), ''), NCHAR(0) COLLATE Latin1_General_100_BIN2, '')
END
Run Code Online (Sandbox Code Playgroud)

FOR XML是破坏的代码.(我没有写这个.它已经在代码库中了).

SELECT @HTMLTableData =
(
    SELECT  HTMLRows 
    FROM (
        SELECT N'<tr>' + HTMLRow + …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2014

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