标签: sql-server-2012

为什么SQL Server会自动忽略最后的空白区域?

我写了一个查询

SELECT * FROM Users WHERE UserName = 'admin '
Run Code Online (Sandbox Code Playgroud)

错误打字.但我发现结果与之相同

SELECT * FROM Users WHERE UserName = 'admin'
Run Code Online (Sandbox Code Playgroud)

似乎SQL Server自动忽略了最后的空白区域.

谁能告诉我为什么?

仅供参考,该列UserName属于类型nvarchar(MAX).

sql-server sql-server-2012

13
推荐指数
2
解决办法
4739
查看次数

SQL Server 2012中的最大行大小,带有varchar(max)字段

我创建了一个包含列类型的表nvarchar(max),我的理解是它们可以支持2GB.但是在插入时,我仍然收到此错误:

无法创建大小为8061的行,该行大于允许的最大行大小8060.

是否需要对数据库进行全局设置,还是有其他限制?varchar(max)每个表的字段数是否有限制?

sql sql-server sql-server-2012

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

为什么这个Where子句中的空格不会导致语法错误?

以下三个Select查询,无论Where子句在表别名和列名之间有多余空格,都会产生相同的结果.他们都有相同的执行计划.为什么空格的存在不会引发语法错误?

DECLARE @TblX TABLE(
    ColX int
    ,ColY float
    )

-----As it normally should be
SELECT *
FROM @TblX X
WHERE X.ColX = 1

----Even this works
SELECT *
FROM @TblX X
WHERE X .ColX = 1

----And this too
SELECT *
FROM @TblX X
WHERE X. ColX = 1
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2012

13
推荐指数
1
解决办法
498
查看次数

SQL Server更改主键数据类型

我正在努力SQL Server 2012:

我有一个主键列表INT.我需要将其更改为GUID.

我是否更改了表并删除了int列primary key

添加GUID列并将其设置为Primary并删除旧的INT列?

谢谢.

primary-key sql-server-2012

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

每两行运行计数

我试图计算每个2行的运行计数,如下所示,

CREATE TABLE sales
(
     EmpId INT, 
     Yr INT, 
     Sales DECIMAL(8,2)
)

INSERT INTO sales (EmpId, Yr, Sales)
VALUES (1, 2005, 12000), (1, 2006, 18000), (1, 2007, 25000),
       (1, 2008, 25000), (1, 2009, 25000),
       (2, 2005, 15000), (2, 2006, 6000), (2, 2007, 6000)

SELECT 
    EmpId, Yr, sales, 
    SUM(Sales) OVER (PARTITION BY empid ORDER BY empid ROWS BETWEEN 2 PRECEDING AND CURRENT ROW ) AS TotalSales2
FROM 
    sales
Run Code Online (Sandbox Code Playgroud)

输出:

EmpId   Yr      sales   TotalSales2
-----------------------------------
  1     2005    12000      12000
  1     2006    18000 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

13
推荐指数
2
解决办法
788
查看次数

JDBC SQL Server:未为参数编号设置该值

我从从java代码调用存储过程的代码中收到以下错误:

Exception Trace {} org.springframework.jdbc.UncategorizedSQLException:CallableStatementCallback; 未分类SQL的SQLException [{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,,?,,?,?,?,?,?)}]; SQL状态[null]; 错误代码[0]; 没有为参数编号11设置该值.嵌套异常是com.microsoft.sqlserver.jdbc.SQLServerException:未在org.springframework.jdbc的org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)中为参数编号11设置该值. support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)在org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1095)在org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1131)

该应用程序部署在WAS 8.5.5上并使用jdbc驱动程序版本4.2.重新启动服务器时,此问题不再发生.生成的以下调用语句看起来不正确.连续逗号没有?它们之间.

{call test.usp_xxx_GetCompanyDetails(?,?,?,?,?,,?,,?,?,?,?,?)}

存储过程有10个参数.以下是存储过程的定义:

CREATE PROCEDURE [test].[usp_xxx_GetCompanyDetails]
(
    @ANumber        int,
    @CompanyId      int,
    @UserRole       varchar(15),
    @RequestId      varchar(100),
    @CompanyCode    varchar(5),
    @BaseSystem     varchar(5),
    @PType          varchar(20),    
    @PId            varchar(40),
    @IsActive       bit,     
    @responseData   xml OUT
)
Run Code Online (Sandbox Code Playgroud)

以下是调用存储过程的java代码.它使用spring数据进行调用.

 private String executeProc(Integer aNumber,Integer companyId, String baseSystem, 
                String role,String companyCode,String requestId, String pType,String pId,
                boolean isActive ) throws SQLException {

            SQLXML responseData=null;
            Map<String,Object> inputParams= new HashMap<>();
            inputParams.put("ANumber", aNumber);
            inputParams.put("CompanyId", companyId);
            inputParams.put("UserRole", role);
            inputParams.put("RequestId", requestId);
            inputParams.put("CompanyCode", companyCode); …
Run Code Online (Sandbox Code Playgroud)

java sql-server websphere jdbc sql-server-2012

13
推荐指数
1
解决办法
1355
查看次数

AWS上的单个m1.large实例的Sql Server Enterprise Edition许可费用是多少?

Sql Server定价和亚马逊网络服务核心规范的结合让我感到困惑.Sql Server目前每个核心授权,我发现2个核心包价格约为13,000美元.AWS上的单个大型实例提供4个弹性计算单元,这取决于您读取的文档等同于2个虚拟核心(2x ECU = 1x核心),4个虚拟核心(1x ECU = 1x核心)或8个虚拟核心(1x ECU = 2x核心).通过在我现有的Sql Server框中打开性能监视器,看起来第一个选项(2个虚拟核心)是正确的,但是,我已阅读文档,让我相信最后一个选项(8个虚拟核心)也是可能的,可能是Microsoft计算其许可策略的方式.

微软的Stack Overflow是否有人可以回答这个问题?或者,是否有人已经拥有此设置,可以披露企业版许可如何应用于他们的AWS服务器,并且没有透露他们实际支付的费用,帮助我计算我们将以我引用的价格支付单个服务器的费用以上?上面列出的三个选项让我相信我们将支付介于$ 13k和$ 6k之间的差额,两者之间的差异在决定是否应该切换到MySQL时会产生巨大的差异.

谢谢!

sql-server amazon-web-services sql-server-2012

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

SQL Server - 在预期条件的上下文中指定的非布尔类型的表达式,靠近"RETURN"

在SQL Server 2012中使用以下查询获取此错误.

在"RETURN"附近的预期条件的上下文中指定的非布尔类型的表达式.

CREATE FUNCTION [dbo].[GetPMResources](@UserResourceNo nvarchar(250))

   RETURNS @Resources TABLE (
   ResourceNo nvarchar(250) COLLATE Latin1_General_CS_AS not null,
   Name nvarchar(250) COLLATE Latin1_General_CS_AS not null
   ) 
  AS
  BEGIN

        Declare @RoleID int, @UserDivision nvarchar(20)
        SELECT TOP(1) @RoleID = r.ReportingRole, @UserDivision = r.DivisionCode
        FROM Resource r 
        WHERE r.ResourceNo = @UserResourceNo



        INSERT @Resources
        SELECT r.ResourceNo,Name = r.ResourceNo + ' ' + r.Name
        FROM Resource r WHERE r.ResourceNo IN
                        ( 
                            SELECT m.ResourceNo FROM JobMember m
                            JOIN Job j ON j.JobNo = m.JobNo
                            WHERE j.ProjectManagerNo = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

12
推荐指数
3
解决办法
13万
查看次数

计算SQL Server中布尔值更改的次数

我有这张桌子:

     [SDate - DateTime]                 [Value] - Represents a boolean
    2010-11-16 10:10:00                    1
    2010-11-16 10:11:00                    0
    2010-11-16 10:12:00                    1
    2010-11-16 10:13:00                    1
Run Code Online (Sandbox Code Playgroud)

我需要一个查询来计算值变化的次数.

例如:

    2010-11-16 10:10:00                    0
    2010-11-16 10:11:00                    1
    2010-11-16 10:12:00                    0
    2010-11-16 10:13:00                    0
    2010-11-16 10:14:00                    1
    2010-11-16 10:15:00                    0
    2010-11-16 10:16:00                    1
    ...
                                       5 changes
Run Code Online (Sandbox Code Playgroud)
    2010-11-16 10:10:00                    0
    2010-11-16 10:11:00                    0
    2010-11-16 10:12:00                    0
    2010-11-16 10:13:00                    1
    2010-11-16 10:14:00                    1
    2010-11-16 10:15:00                    1
    2010-11-16 10:16:00                    1
    ...                                       
                                        1 change
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2012

12
推荐指数
1
解决办法
1044
查看次数

如何将SQL查询结果保存到磁盘上的XML文件中

我想将表从SQL Server 2012导出到XML文件.我找到了很好的答案,在这里如何从SQL Server数据库查询中获取XML结果,但我仍然缺少如何将此结果物理保存到文件中.

SQL查询是:

SELECT [Created], [Text]
FROM [db304].[dbo].[SearchHistory]
FOR XML PATH('Record'), ROOT('SearchHistory')
Run Code Online (Sandbox Code Playgroud)

我使用Microsoft SQL Server Management Studio来执行此结果.我在结果窗口中看到了XML,但我无法保存它.

在上下文菜单中有"Save Result As ..",但是有98900行,我使用此选项耗尽了8GB内存.

有没有办法如何将此查询直接保存到磁盘上的XML文件?

xml sql-server sql-server-2012

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