标签: sql-server-2016

如何在不使用catch异常的情况下从.NET应用程序检测sql server超时

在我当前的应用程序中,我通过调用T-SQL Update命令执行更新.问题是当时其他用户锁定了同一记录.

在.NET应用程序中,应用程序将等待SQL Server超时,然后它将抛出SqlException超时.

是否可以首先检查特定记录是否被其他进程锁定而不是捕获异常?

c# sql-server sql-server-2005 sql-server-2008 sql-server-2016

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

如何判断sql表是否是Temporal?

使用SQL Server 2016支持时态表我想知道是否有办法确定表当前是否属于临时表?就像是

select * from sys.objects where object_id('dbo.MyTable', 'u') = parent_object_id and type_desc = "SYSTEM_VERSIONED"

sql sql-server sql-server-2016

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

'JSON'附近的语法不正确 - SQL Server 2016

所以我最近安装的SQL Server 2016 CTP3主要用于JSON输出功能.我试图在我的SQL查询中使用它,就像它在MSDN下面的链接中显示的那样.关键字JSON不会变为蓝色并出现错误"JSON'附近的语法不正确"

https://msdn.microsoft.com/en-us/library/dn921882%28v=sql.130%29.aspx?f=255&MSPPError=-2147217396

可能有什么不对?

编辑:我正在使用AdventureWorks DB for SQL Server 2016进行测试.查询是

SELECT * FROM Person.Contact FOR JSON AUTO
Run Code Online (Sandbox Code Playgroud)

sql json sql-server-2016

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

使用JSON_VALUE访问SQL Server 2016中的JSON数组

我在使用新引入的JSON_VALUE函数访问json中的数组时遇到困难.请考虑以下代码 -

IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='JsonData')
    DROP TABLE JsonData;
go

CREATE TABLE JsonData(JsonData nvarchar(max));
DECLARE @SQL nvarchar(max);
DECLARE @Table AS TABLE(JsonPath VARCHAR(256));

INSERT INTO JsonData(JsonData)
VALUES(
'{
  "firstName": "John",
  "lastName" : "doe",
  "age"      : 26,
  "address"  : {
    "streetAddress": "naist street",
    "city"         : "Nara",
    "postalCode"   : "630-0192"
  },
  "phoneNumbers": [
    {
      "type"  : "iPhone",
      "number": "0123-4567-8888"
    },
    {
      "type"  : "home",
      "number": "0123-4567-8910"
    }
  ]
}')


INSERT INTO @Table
SELECT VALUE  FROM OPENJSON('{
"Path1":"$.firstName","Path2":"$.phoneNumbers[:1].number"
}') ;

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server json sql-server-2016

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

如何通过保存数据将存在表更改为SQL Temporal表?

我有很多数据表,我想转换为Microsoft Temporal表,但是当我想转换时态表导致丢失我的数据.我的代码是:

Alter TABLE dbo.Employee   
(    
  [EmployeeID] int NOT NULL PRIMARY KEY CLUSTERED   
  , [Name] nvarchar(100) NOT NULL  
  , [Position] varchar(100) NOT NULL   
  , [Department] varchar(100) NOT NULL  
  , [Address] nvarchar(1024) NOT NULL  
  , [AnnualSalary] decimal (10,2) NOT NULL  
  , [ValidFrom] datetime2 (2) GENERATED ALWAYS AS ROW START  
  , [ValidTo] datetime2 (2) GENERATED ALWAYS AS ROW END  
  , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)  
 )    
 WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory)); 
Run Code Online (Sandbox Code Playgroud)

如何通过保存数据将存在表改为Sql时态表?

sql sql-server temporal-database sql-server-2016 temporal-tables

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

SQL Server 2016 - 时态表 - 如何识别用户

是否可以获取有关修改历史表中数据的用户/连接的信息?我读到了可以使用时态表的审计场景,并且可以检测谁更改了数据.但是我该怎么做呢?

sql-server sql-server-2016

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

BULK INSERT格式附近的语法不正确?

我试图弄清楚为什么我正在使用的BULK INSERT命令没有识别命令中使用的FORMAT和FIELDQUOTE选项.

BULK INSERT dbo.tblM2016_RAW_Current_Import_File
FROM '\\x\tms\SCADA.dat'
WITH
(
    FIRSTROW = 1,
    FORMAT = 'CSV',
    FIELDQUOTE = '"',
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '\n'
)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我收到了错误:

消息102,级别15,状态1,行6
'格式'附近的语法不正确.

增加:FORMAT在SSMS中以粉红色文本FIELDQUOTE显示,以黑色文本显示,其他以蓝色文本显示.由于某些原因,命令似乎无法识别FORMATFIELDQUOTE成为关键字.

sql sql-server sql-server-2016

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

如何将多个表作为一个XML返回?

我有以下脚本:

DECLARE @columns TABLE (
    Caption varchar(50),
    Width int);

INSERT INTO @columns 
VALUES ('Id', 0), ('Name', 100);

DECLARE @rows TABLE (
    Id int,
    [Name] varchar(50));

INSERT INTO @rows 
VALUES (1, 'John'), (2, 'Steve');

SELECT *,
    (SELECT *
     FROM @rows
     FOR XML PATH('Row'), ROOT('Rows'), TYPE, ELEMENTS)
FROM @columns
FOR XML PATH('Column'), ROOT('Results'), TYPE, ELEMENTS;
Run Code Online (Sandbox Code Playgroud)

我需要返回以下XML:

<Results>
    <Columns>
        <Column>
            <Caption>Id</Caption>
            <Width>0</Width>
        </Column>
        <Column>
            <Caption>Name</Caption>
            <Width>100</Width>
        </Column>
    </Columns>
    <Rows>
        <Row>
            <Id>1</Id>
            <Name>John</Name>
        </Row>
        <Row>
            <Id>2</Id>
            <Name>Steve</Name>
        </Row>
    </Rows>
</Results>
Run Code Online (Sandbox Code Playgroud)

我的想法是,我将XML转换为DataSet2 DataTables …

c# sql sql-server sql-server-2016

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

SQL用聚集列存储索引替换所有表

我们正在进行一个迁移项目,并希望将大型数据仓库的大多数行存储索引替换为集群列存储索引。我们在标识列上添加了唯一索引。

是否有人有脚本来更改所有100多个表的运行,并用Columnstore Index替换主键聚集索引?

测试以查看列存储索引是否在迁移时有助于调整性能。

*顺便说一句,是否在Columnstore中推荐Identity列?需要标识每一行的方法(有时标识列可能会重置,因此要放置唯一约束,还是应该使用Guid?)。如果不是标识,请随时使用Guid或其他方法删除标识列。

当前:

CREATE TABLE [dbo].[Fact_SalesTransaction] 
(
    [FactSalesTransactionId]        INT              IDENTITY (1, 1) NOT NULL,
    [DimCustomerId]                 INT              NOT NULL,
    [DimSellerId]                   INT              NOT NULL,
    [SalesDatetime]                 DATETIME         NULL,
    [DimSalesDateId]                INT              NULL,
    [SalesAmount]                   DECIMAL (28, 2)  NULL,
    [ETLCreateDate]                 DATETIME         NULL,
    CONSTRAINT [pk_SalesTransactionId] PRIMARY KEY CLUSTERED ([SalesTransactionId] ASC)
);
Run Code Online (Sandbox Code Playgroud)

预期:

CREATE TABLE [dbo].[Fact_SalesTransaction] 
(
    [FactSalesTransactionId]        INT              IDENTITY (1, 1) NOT NULL,
    [DimCustomerId]                 INT              NOT NULL,
    [DimSellerId]                   INT              NOT NULL,
    [SalesDatetime]                 DATETIME         NULL,
    [DimSalesDateId]                INT              NULL,
    [SalesAmount]                   DECIMAL (28, 2)  NULL,
    [ETLCreateDate]                 DATETIME …
Run Code Online (Sandbox Code Playgroud)

sql-server indexing data-warehouse columnstore sql-server-2016

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

SSAS度量值组估计大小估计行

我想了解更多关于SSDS的“度量值组”的属性面板的两个属性:EstimatedRows和EstimatedSize。关于这两个方面似乎很少有文档。

我确实发现我可以运行“聚合设计向导”,它不仅会计算行数,而且还会自动填充每个度量值组中的EstimatedRows属性。所以问题1:SSAS如何使用此属性,并且在任何地方都有记录?

在我的测试多维数据集中,度量值组的EstimatedSize属性是只读的(显示为灰色)。我发现的少量文档暗示我可以/应该设置此属性。问题2,为什么这是只读的,并且有任何使用文档?

(我正在使用SQL Server 2016)

sql-server ssas visual-studio sql-server-2016 ssas-2016

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