我尝试在SSMS 2014(已应用CU6)中重命名数据库或表,方法是在对象资源管理器中单击并选择数据库或表,然后按F2编辑名称.键盘上的Delete键不会删除光标右侧的字符或任何选中的字符.
这只是我的问题,还是我发现了一个错误?
我有一个基本上看起来像这样的查询:
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) 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 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
我有下表列:
[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)
如何将文件流添加到现有列?
我们将服务器从 2005 年迁移到 2014 年,用户可以在 2005 年服务器中删除它但在 2014 年我们收到错误,因为没有权限或不退出我们已经授予相同的权限,甚至他是系统管理员。在我们的应用程序方面,他们无法删除应用程序用户通过我们数据库中的用户连接的视图,他拥有所有权限并且他是 sysyadmin
我在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 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
我创建了以下索引来覆盖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 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-2014 ×10
sql-server ×9
sql ×4
t-sql ×3
indexing ×1
isnumeric ×1
ssis ×1
ssms ×1
ssms-2014 ×1