标签: sql-server-2014

与临时表相比,为什么声明表变量非常慢?

我的后台进程是批量更新/插入数据.我需要在临时表中存储一些数据供以后使用.我有5个临时表.如果我使用临时表(CREATE TABLE #T),则需要2-3秒,但如果我使用表变量(DECLARE @T TABLE)则需要超过90秒.这是一个示例临时表,

CREATE TABLE #TempAttributes
(
    AID int
    ,PID int
    ,ATypeValue nvarchar(MAX)
    ,ATypeKey nvarchar(MAX)
    ,PLanguageID int
);
Run Code Online (Sandbox Code Playgroud)

为什么表变量很慢?

sql sql-server sql-server-2014

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

用于Visual Studio 2013的SSDTBI是否可以与SQL Server 2012一起使用?

目前,我正在使用Visual Studio 2012和VST的SSDTBI为SQL Server 2012创建SSIS包.这很好用(但SSIS包设计器中存在很多错误).

微软刚刚发布了针对VS2013的SSDTBI,并且想知道这是否只适用于SQL Server 2014.我是否能够编辑我在VS2012中创建的相同SSIS包,并且仍然可以在SQL Server 2012中使用它们?

更新:从这篇博客来看,似乎SQL Server 2012的SSIS仍然存在问题.

ssis sql-server-2012 visual-studio-2012 visual-studio-2013 sql-server-2014

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

带有HierarchyID的CTE突然导致解析错误

所以我在我的数据库中有这个自引用表Nodes,用于存储组织的树结构:

[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[ParentId] [int] NULL,
(+ other metadata columns)
Run Code Online (Sandbox Code Playgroud)

从中我使用HIERARCHYID来管理基于访问级别等的查询.我为此编写了一个表值函数tvf_OrgNodes,很久以前,在SQL Server 2008到2014年进行了测试和工作,从那以后它一直保持不变,因为它做得很好.然而,现在已经发生了一些变化,因为从路径nvarchars("/ 2/10/8 /")解析HIERARCHYID会导致以下错误,在Google上只匹配4次点击(!):

Msg 6522, Level 16, State 2, Line 26
A .NET Framework error occurred during execution of user-defined routine or aggregate "hierarchyid": 
Microsoft.SqlServer.Types.HierarchyIdException: 24000: SqlHierarchyId operation failed because HierarchyId object was constructed from an invalid binary string.
Run Code Online (Sandbox Code Playgroud)

当改变函数只返回NVARCHAR而不是实际的HIERARCHYID时,路径都看起来很好,从/根开始,接着是/2/等等.简单的选择HIERARCHYID::Parse('path')也可以正常工作.我实际上通过将路径保持为字符串一直工作,直到INSERT进入函数结果,解析那里的路径.但是,当我尝试将重新获得的数据插入到相同模式的表中时,我得到了同样的错误.

所以问题是,这是一个错误,还是有人知道使用HIERARCHYIDs的任何(新的?)陷阱< - >可能导致这种情况的路径字符串?我不知道整个二进制字符串的想法来自哪里.

这是TVF的代码:

CREATE FUNCTION [dbo].[tvf_OrgNodes] () 
RETURNS @OrgNodes TABLE …
Run Code Online (Sandbox Code Playgroud)

common-table-expression hierarchyid sql-server-2014

5
推荐指数
0
解决办法
879
查看次数

数据库“无法打开物理文件”的SSMS删除失败

试图在其他地方找不到运气。

我正在尝试删除磁盘上不再存在的数据库,但仍显示在SSMS 2014的对象资源管理器中

那么,如何从对象资源管理器中“清除它们”呢?

我需要手动将它们从sys.master_files中删除吗?

例外是:

    Drop failed for Database 'aspnet-Blawblaw-20141027015559'.  (Microsoft.SqlServer.Smo)

    ------------------------------
    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=12.0.2000.8+((SQL14_RTM).140220-1752)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Drop+Database&LinkId=20476

    ------------------------------
    Program Location:

       at Microsoft.SqlServer.Management.Smo.SqlSmoObject.DropImpl()
       at Microsoft.SqlServer.Management.Smo.Database.Drop()
       at Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject(Int32 objectRowIndex)
       at Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)

    ===================================

    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------
    Program Location:

       at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
       at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType)
       at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries)
       at Microsoft.SqlServer.Management.Smo.SqlSmoObject.ExecuteNonQuery(StringCollection queries, Boolean includeDbContext)
       at Microsoft.SqlServer.Management.Smo.SqlSmoObject.DropImplWorker(Urn& urn)
       at Microsoft.SqlServer.Management.Smo.SqlSmoObject.DropImpl()

    ===================================

    Unable to open the physical file "C:\Projects\BlawBlaw\BlawBlaw\App_Data\aspnet-BlawBlaw-20141027015559.mdf". Operating system error 3: …
Run Code Online (Sandbox Code Playgroud)

ssms drop-database sql-server-2014

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

操作数类型冲突:nvarchar与Type_WP_Days不兼容

我在数据库中做了一些简单的步骤

步骤1:

CREATE TYPE [dbo].[TempType] AS TABLE([MM] [INT])
Run Code Online (Sandbox Code Playgroud)

第2步:

CREATE PROC [DBO].[TEMP1] (@MYTAB TEMPTYPE READONLY)  
AS
BEGIN
    SELECT * 
    FROM @MYTAB
END
Run Code Online (Sandbox Code Playgroud)

第3步:

CREATE TABLE #TEMP11 ([MM] [INT])

INSERT INTO #TEMP11 
   SELECT 1 UNION 
   SELECT 2 UNION 
   SELECT 3 

SELECT * FROM #TEMP11

EXEC TEMP1 #TEMP11
Run Code Online (Sandbox Code Playgroud)

结果:

(4 row(s) affected) 
(4 row(s) affected) 
Run Code Online (Sandbox Code Playgroud)

消息206,级别16,状态2,过程temp1,行0
操作数类型冲突:nvarchar与TempType不兼容

我在另外两台服务器上做了它,它给出了相同的消息.我的代码中有什么错误.我也使用过SQL Server 2008 R2和SQL Server 2014.

t-sql sql-server sql-server-2008-r2 sql-server-2014

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

SAS libname语法,通过ODBC连接到SQL Server

我用谷歌搜索了几天,但是无法正常工作.

我正在使用SQL 2014和adventureworks数据库.

我有SAS 9.3.

我尝试了不同的ODBC设置,如设置默认数据库,使用Windows登录或SQL登录.不同的司机.仍然没有,使用完整和noprompt:

libname mylib odbc complete='TrustedConnection=True;DSN=test2;SERVER=MYSERVER\SQLEXPRESS;DATABASE=AdventureWorks2012;'stringdates=yes;
proc print data=mylib.Person;
Run Code Online (Sandbox Code Playgroud)

错误信息:

注意:Libref MYLIB已成功分配如下:引擎:ODBC物理名称:test2

注49-169:在未来的SAS版本中,带引号的字符串后标识符的含义可能会更改.建议在带引号的字符串和后续标识符之间插入空格.

注意:由于错误,SAS系统停止处理此步骤.注意:使用PROCEDURE PRINT(总处理时间):实时5.48秒cpu时间0.34秒

700 proc打印数据= mylib.Person; 错误:文件MYLIB.Person.DATA不存在

我已尝试过Person.Person并且也在连接字符串中使用schema=Person.

但是,如果我使用以下它可以工作.我把默认数据库放在ODBC中:

proc sql;
   connect to odbc as mycon
   (required = "dsn=awlt32;uid=sa;password=mypassword");
   select *
   from connection to mycon
      (select *
      from Person.Person);

disconnect from mycon;
quit;
Run Code Online (Sandbox Code Playgroud)

我知道这是一个非常简单的问题,但无论我找到什么样的代码,我似乎都无法使它工作.提前致谢.

sql sas sql-server-2014

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

在区分大小写的SQL Server数据库中执行不区分大小写的Like查询

这是我的情景.

SQL Server 2014标准版,我有一个具有SQL_Latin1_General_CP437_BIN2区分大小写的排序规则的数据库.

我想执行一个LIKE查询,它应该返回输出而不管区分大小写.

例如:如果我执行Like查询以使用userName'John'获取记录,它也应该返回行,而不管区分大小写"JOHN","John","john","joHN".

我尝试使用Lcase,Ucase但是我收到了错误

Msg 195,Level 15,State 10,Line
4'LCASE'不是公认的内置函数名.

这是我的示例查询

SELECT TOP 300 * 
FROM
    (SELECT 
         userNo, userName, Place, Birthdate
     FROM usertable 
     WHERE personid = 2 
       AND (Name LIKE LCASE('%john%')) 

     UNION 

     SELECT 
         userNo, userName, Place, Birthdate, 
     FROM usertable2 
     WHERE personid = 2 
       AND (Name LIKE LCASE( '%john%') OR Place LIKE LCASE('%NY%')) ) a 
ORDER BY 
    userNo
Run Code Online (Sandbox Code Playgroud)

伙计们帮助我提出宝贵的建议,我对使用基于校对的数据库感到困惑.

sql-server collation case-insensitive sql-like sql-server-2014

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

将sql-server DB从表格更改为多维

我有以下问题:当我尝试将我的SSAS项目(带有多维数据集,维度和所有爵士乐)部署到sql-server时,它会抛出错误说

您无法部署模型,因为数据库部署服务器未在多维模式下运行.

我是新手,所以这可能是一个愚蠢的问题,但我如何将数据库模式从表格更改为多维?

sql-server ssas multidimensional-array tabular sql-server-2014

5
推荐指数
3
解决办法
7232
查看次数

将开始和结束列合并为一列

我已经搜索了几个星期的高低,现在试图找到我的问题的解决方案.

我的问题如下:

A有一张桌子,上面有车辆遥测提供者的起点和终点坐标和日期.

我需要将这些合并到一个列中,以便我们的报告解决方案能够绘制它们.

一些示例数据如下:

DECLARE @TblVar AS TABLE([ServiceID] INT
                    ,[StartDate] DATETIME
                    ,[StartLocation] VARCHAR(255)
                    ,[StartLat] FLOAT
                    ,[StartLong] FLOAT
                    ,[EndDate] DATETIME
                    ,[EndLocation] VARCHAR(255)
                    ,[EndLat] FLOAT
                    ,[EndLong] FLOAT);
INSERT INTO @TblVar

VALUES (48322, '2016-11-28 05:38:37.000','Weaver Road,Leicester',52.5753273,-1.306842,'2016-11-28 05:40:02.000','Earl Street,Leicester',52.5781,-1.3048711)
      ,(48322, '2016-11-28 05:44:05.000','Earl Street,Leicester',52.5780996,-1.3048768,'2016-11-28 05:53:52.000','Arbor Road,Leicester',52.5533448,-1.2349645)
      ,(48322, '2016-11-28 09:14:25.000','Arbor Road,Leicester',52.5533833,-1.2349445,'2016-11-28 09:15:54.000','Coventry Road,Leicester',52.5522865,-1.2370495)  
      ,(48322, '2016-11-28 09:16:05.000','Coventry Road,Leicester',52.552292,-1.2370598,'2016-11-28 09:20:41.000','Arbor Road,Leicester',52.553338,-1.2352033)    
      ,(48322, '2016-11-28 13:34:36.000','Arbor Road,Leicester',52.553388,-1.2352651,'2016-11-28 13:53:29.000','Narborough Road South,Leicester',52.597422,-1.1832976)      
      ,(48322, '2016-11-28 13:55:36.000','Narborough Road South,Leicester',52.597352,-1.183299,'2016-11-28 13:58:51.000','Hazel Drive,Leicester',52.6020946,-1.1760238)
      ,(48322, '2016-11-28 14:11:53.000','Hazel Drive,Leicester',52.6020853,-1.1760053,'2016-11-28 14:24:40.000','Arbor Road,Leicester',52.5533118,-1.2352118)
      ,(48322, '2016-11-28 14:29:48.000','Arbor Road,Leicester',52.5532741,-1.2352471,'2016-11-28 14:30:39.000','Coventry Road,Leicester',52.552955,-1.2363475) …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2014

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

SQL用于选择具有相同值的连续记录

我有一张测量表.每分钟进行一次测量.我需要为同一个device_id连续多次选择具有相同sample_value的行.

这是初始数据:

    sample_date sample_time device_id   sample_value
    20180701    1010        111         11
    20180701    1011        111         12
    20180701    1012        111         13
    20180701    1013        222         11
    20180701    1014        222         11
    20180701    1015        222         12
    20180701    1016        111         12
    20180701    1017        111         11
    20180701    1018        222         13
    20180701    1019        222         12
    20180701    1020        222         13
    20180701    1021        222         12
    20180701    1022        222         12
    20180701    1023        111         12
    20180701    1024        111         13
    20180701    1025        111         13
    20180701    1026        111         12
    20180701    1027        111         13
    20180701    1028 …
Run Code Online (Sandbox Code Playgroud)

sql gaps-and-islands sql-server-2014

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