标签: sql-server-2014

带连接字符串的SQLCmd

我可以通过SQLcmd传递连接字符串吗?

我想在使用sqlcmd时通过连接字符串更改应用程序名称和故障转移伙伴(用于镜像).

现在.当我使用sqlcmd时,SQLcmd在sys.sysprocesses结果中设置我的连接的应用程序名称.

sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012 sql-server-2014

7
推荐指数
1
解决办法
2651
查看次数

除了在创建临时表之前,最好在使用后删除临时表吗?

我有一个存储过程创建临时表.它只需要这个存储过程的范围,而不是其他地方.

当我使用临时表列出这个时,我总是检查临时表是否存在,如果存在则删除它,然后在存储过程中创建它.即:

IF OBJECT_ID('tempdb..#task_role_order') IS NOT NULL    
        DROP TABLE #task_role_order        
CREATE TABLE #task_role_order(...)
Run Code Online (Sandbox Code Playgroud)

大多数情况下,除了在创建临时表之前,最好先删除临时表吗?

如果需要更多上下文,我有一个.NET Web API后端,它调用数据库中的存储过程.我相信当SQL Server会话结束时,SQL Server会丢弃临时表.但我不知道.NET每次查询数据库时是打开一个新的SQL Server会话,还是每个应用程序生命周期只打开一次,等等.

我读过这个类似的问题,但认为它略有不同.

sql-server temp-tables sql-server-2014

7
推荐指数
1
解决办法
7692
查看次数

按值对行进行分组和计数,直到更改为止

我有一个表,消息在发生时存储.通常有一条消息'A',有时A被单个消息'B'分隔.现在我想对值进行分组,以便我能够分析它们,例如找到最长的'A'条纹或'A'条纹的分布.

我已经尝试过COUNT-OVER查询,但是仍在为每条消息计算.

SELECT message, COUNT(*) OVER (ORDER BY Timestamp RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
Run Code Online (Sandbox Code Playgroud)

这是我的示例数据:

Timestamp        Message
20150329 00:00   A
20150329 00:01   A
20150329 00:02   B
20150329 00:03   A
20150329 00:04   A
20150329 00:05   A
20150329 00:06   B
Run Code Online (Sandbox Code Playgroud)

我想要跟随输出

Message    COUNT
A          2
B          1
A          3
B          1
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2014

7
推荐指数
2
解决办法
5462
查看次数

如何处理DATEDIFF(分钟,'00:00','24:20')喜欢的场景?

我的表中有一栏.我们在其中以格式存储字符串值.在'HH:MM'使用此表获取记录时,每个东西都可以正常工作

DATEDIFF(MINUTE, '00:00', ColumnName)
Run Code Online (Sandbox Code Playgroud)

问题是我们的价值大于23:59.它的显示错误就像

从字符串转换日期和/或时间时转换失败.

任何人都可以建议我采用正确的方法来实现这种情况.

sql sql-server sql-server-2014

7
推荐指数
2
解决办法
71
查看次数

如何在SQL Server中更改存储过程时添加标头注释

我有一个存储过程,其中没有标题注释.我想添加它们,但每当我尝试时,它都不包括在内.

在SQL Server Management Studio I中:

1.右键单击我的存储过程,然后单击"修改"

USE [ABigDB]
GO
/****** Object:  StoredProcedure [dbo].[spDoWork]    Script Date: 21/08/2015 14:11:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spDoWork]
      @Id uniqueidentifier,
      @Session nvarchar(50),
      @XMLData xml
WITH EXECUTE AS OWNER
AS
BEGIN
--etc etc...
END
Run Code Online (Sandbox Code Playgroud)

2.我将注释粘贴到存储过程上方并运行脚本:

-- Stored Procedure
--    Author:           Dave
--    Create date:      21/08/2015
--    Description:      Does Stuff      
--  Change history
--      07/08/2015  - Overlord - Done stuff
--      06/08/2015  - Kerrigan - Done more stuff
USE [ABigDB] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server ssms sql-server-2014

7
推荐指数
1
解决办法
4794
查看次数

EF 6是否支持SQL Server 2014类型?

我有一个asp.net mvc 5 web api应用程序,我需要将SqlGeography实例转换为DbGeography实例,以便使用Entity Framework 6进行查询.我使用以下代码执行此操作:

SqlGeography geo = SqlGeography.STGeomFromText(chars, Constants.SRID);
DbGeography dbGeo = DbSpatialServices.Default.GeographyFromProviderValue(geo);
Run Code Online (Sandbox Code Playgroud)

调用GeographyFromProviderValue抛出以下异常:

指定的提供程序值与此空间服务实现不兼容.类型为'Microsoft.SqlServer.Types.SqlGeography,Microsoft.SqlServer.Types,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'的值.
参数名称:providerValue

果然,我的SqlGeography实例来自SQL Server 2014类型程序集(Microsoft.SqlServer.Types, Version 12.0.0.0).

深入了解Entity Framework源代码显示此方法是罪魁祸首:

//EntityFramework.SqlServer.dll(6.0.0.0) System.Data.Entity.SqlServer.SqlTypesAssemblyLoader
public SqlTypesAssemblyLoader(IEnumerable<string> assemblyNames = null)
{   
    this._preferredSqlTypesAssemblies = (assemblyNames ?? ((IEnumerable<string>)new string[]
    {
        "Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91",
        "Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
    }));
        this._latestVersion = new Lazy<SqlTypesAssembly>(new Func<SqlTypesAssembly>(this.BindToLatest), true);
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,不包括SQL Server 2014的类型程序集.这是否意味着Entity Framework 6不支持SQL Server …

.net c# entity-framework entity-framework-6 sql-server-2014

7
推荐指数
1
解决办法
958
查看次数

如何从SQL Server 2014中的"选择查询"将数据分配给用户定义的表类型

我有一个存储过程,它从多个表中检索三列.我想在用户定义的多值表中获取结果,并将变量传递给另一个过程以对变量数据执行操作.但它不起作用.我有以下代码.知道为什么它不起作用吗?

--This is the initial stored procedure
Create Procedure spSelectData
AS
BEGIN
    Select 
        Userid, first_date, last_update
    From Users
END

--This is to create the table type.
Create type Task1TableType AS TABLE
(
     Userid nvarchar(20),
     First_date datetime,
     Last_update datetime
)

--Declare a table of type 
DECLARE @firstStep AS Task1TableType
(
    Userid nvarchar(20),
    First_date datetime,
    Last_update datetime
)

Insert @firstStep EXEC spSelectData

Select * from @firstStep

-- This is the procedure 1
CREATE PROC spTest1
   @TTType Task1TableType READONLY
AS
BEGIN
    Select * …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2014

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

这个列[Bmk1002]在我的执行计划的表扫描操作符中是什么?

我有一个简单的脚本.

IF OBJECT_ID('dbo.Customers', 'U') IS NOT NULL
    DROP TABLE dbo.Customers;
GO
CREATE TABLE dbo.Customers
(
 custid INT NOT NULL,
 companyname VARCHAR(125) NOT NULL,
 phone VARCHAR(120) NOT NULL,
 address VARCHAR(150) NOT NULL
);
INSERT  INTO dbo.Customers
        (custid, companyname, phone, address)
VALUES  (1, 'cust 1', '(111) 111-1111', 'address 1'),
        (2, 'cust 2', '(222) 222-2222', 'address 2'),
        (3, 'cust 3', '(333) 333-3333', 'address 3'),
        (4, 'cust 4', '(444) 444-4444', 'address 4'),
        (5, 'cust 5', '(555) 555-5555', 'address 5');
IF OBJECT_ID('dbo.CustomersStage', 'U') IS NOT …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-execution-plan sql-server-2014

7
推荐指数
1
解决办法
223
查看次数

7
推荐指数
1
解决办法
4671
查看次数

根据1列的变化值排名记录

问:如何根据1列的变化值对记录进行排名?

我有以下数据(https://pastebin.com/vdTb1JRT):

EmployeeID  Date        Onleave
ABH12345    2016-01-01  0
ABH12345    2016-01-02  0
ABH12345    2016-01-03  0
ABH12345    2016-01-04  0
ABH12345    2016-01-05  0
ABH12345    2016-01-06  0
ABH12345    2016-01-07  0
ABH12345    2016-01-08  0
ABH12345    2016-01-09  0
ABH12345    2016-01-10  1
ABH12345    2016-01-11  1
ABH12345    2016-01-12  1
ABH12345    2016-01-13  1
ABH12345    2016-01-14  0
ABH12345    2016-01-15  0
ABH12345    2016-01-16  0
ABH12345    2016-01-17  0
Run Code Online (Sandbox Code Playgroud)

我想产生以下结果:

 EmployeeID DateValidFrom    DateValidTo     OnLeave
 ABH12345   2016-01-01       2016-01-09      0
 ABH12345   2016-01-10       2016-01-13      1
 ABH12345   2016-01-14       2016-01-17      0
Run Code Online (Sandbox Code Playgroud)

所以我想我是否可以以某种方式创建一个排名列(如下所示),该列根据Onleave列中的值递增 - 由EmployeeID列分区.

EmployeeID  Date …
Run Code Online (Sandbox Code Playgroud)

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

7
推荐指数
1
解决办法
768
查看次数