在我当前的应用程序中,我通过调用T-SQL Update命令执行更新.问题是当时其他用户锁定了同一记录.
在.NET应用程序中,应用程序将等待SQL Server超时,然后它将抛出SqlException超时.
是否可以首先检查特定记录是否被其他进程锁定而不是捕获异常?
c# sql-server sql-server-2005 sql-server-2008 sql-server-2016
使用SQL Server 2016支持时态表我想知道是否有办法确定表当前是否属于临时表?就像是
select * from sys.objects where object_id('dbo.MyTable', 'u') = parent_object_id and type_desc = "SYSTEM_VERSIONED"
所以我最近安装的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) 我在使用新引入的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) 我有很多数据表,我想转换为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
是否可以获取有关修改历史表中数据的用户/连接的信息?我读到了可以使用时态表的审计场景,并且可以检测谁更改了数据.但是我该怎么做呢?
我试图弄清楚为什么我正在使用的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显示,以黑色文本显示,其他以蓝色文本显示.由于某些原因,命令似乎无法识别FORMAT并FIELDQUOTE成为关键字.
我有以下脚本:
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 …
我们正在进行一个迁移项目,并希望将大型数据仓库的大多数行存储索引替换为集群列存储索引。我们在标识列上添加了唯一索引。
是否有人有脚本来更改所有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
我想了解更多关于SSDS的“度量值组”的属性面板的两个属性:EstimatedRows和EstimatedSize。关于这两个方面似乎很少有文档。
我确实发现我可以运行“聚合设计向导”,它不仅会计算行数,而且还会自动填充每个度量值组中的EstimatedRows属性。所以问题1:SSAS如何使用此属性,并且在任何地方都有记录?
在我的测试多维数据集中,度量值组的EstimatedSize属性是只读的(显示为灰色)。我发现的少量文档暗示我可以/应该设置此属性。问题2,为什么这是只读的,并且有任何使用文档?
(我正在使用SQL Server 2016)
sql-server-2016 ×10
sql-server ×9
sql ×6
c# ×2
json ×2
columnstore ×1
indexing ×1
ssas ×1
ssas-2016 ×1