标签: azure-sql-database

无法使用 SqlPackage 将 Azure bacpac 还原到 localdb

我已在 bacpac 文件中对 SQL Azure 进行了备份,当我尝试将 bacpac 导入 localdb 时,它总是失败。

这是我使用的命令:

PS C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin> .\SqlPackage.exe /Action:Import 
/SourceFile:"C:\Users\S\Desktop\MyDb.bacpac" 
/TargetConnectionString:"Data Source=(localdb)\v11.0;Initial Catalog=MyDb; Integrated Security=true;"
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

*** Error importing database:Data cannot be imported into target because it 
contains one or more user objects. Import should be performed against a new, empty 
database.
Error SQL0: Data cannot be imported into target because it contains one or more
user objects. Import should be performed against a new, empty database.
Run Code Online (Sandbox Code Playgroud)

我的机器是新装的,根本没用过localdb。

sql-server azure-sql-database

4
推荐指数
1
解决办法
6207
查看次数

导入 bacpac 文件后 Azure SQL 中没有数据

我已创建数据库的 bacpac 文件以传输到 Azure。文件上传并导入成功,但导入的数据库中没有数据。我做错了什么?似乎没有关于有或没有数据的选项。该结构最终在数据库中正确存在。

我通过本地导入来验证 bacpac。

import azure-sql-database azure

4
推荐指数
1
解决办法
2405
查看次数

使用 OPTION RECOMPILE 时选择日期索引 SEEK,但不使用 OPTION OPTIMIZE FOR

我有一张表,其中包含 10 年的“包扫描”。有人扫描包裹并记录日期和用户名。现在让我们假设保留 10 年的数据实际上是有目的的。

我有一个页面显示过去一周的摘要,所以显然我只想阅读 1 周的数据。

以下是要在 SSMS 中运行两次的查询,一次使用硬编码的最近日期,另一次使用2013 年的旧日期。它最初是一个参数化查询,但在 SSMS 中我用@p0日期替换:

SELECT [t0].[VerifyDate], [t0].[PackageId], [t0].[Username]
FROM [dbo].[PackageVerification] AS [t0]
INNER JOIN [dbo].[Package] AS [t1] ON [t1].[PackageId] = [t0].[PackageId]

WHERE ([t1].[PackageStatus] <> 99) AND ([t0].[VerifyDate] > @p0)   
ORDER BY [t0].[VerifyDate] DESC
Run Code Online (Sandbox Code Playgroud)

在执行之前,我想介绍一下我的日期索引。

现在,我的日期索引不在我的PackageVerification表上,而是在“辅助视图”上,该视图执行与上面所示的相同的连接。上面的查询能够神奇地使用这个索引视图,因为我启用了 SCHEMABINDING。

CREATE NONCLUSTERED INDEX [IX_Helper_PackageVerification_USER_SCAN_HISTORY] ON [dbo].[Helper_PackageVerification]
(
    [VerifyDate] DESC,
    [PackageStatus] ASC
)
INCLUDE (
    [VerifyDateDate],
    [Username]
) 
Run Code Online (Sandbox Code Playgroud)

当我在 SSMS 中使用旧日期和新日期运行查询时,它会按预期使用扫描或查找。阈值似乎在 2015 年左右。所以任何最近的事情肯定都应该使用搜索。这是结果:

在此输入图像描述

当我从应用程序中将其作为参数化查询运行时,我总是会得到完整扫描 …

sql-server execution-plan azure-sql-database parameter-sniffing

4
推荐指数
1
解决办法
289
查看次数

TSQL 查询以匹配不同长度的字符串

我正在编写一个 TVF 来查询一个大表(数千万行),其中该表中的字符串(邮政编码)与另一个表中的字符串(部分邮政编码(输出代码/扇区部分))匹配。

我遇到了无法解决的边缘情况。

对于那些不熟悉英国邮政编码的人 在此输入图像描述

这是一些示例数据。

DECLARE @tab1 TABLE (Sk INT, Postcode VARCHAR(8))
DECLARE @tab2 TABLE (Sk INT, Coverage VARCHAR(8)) 

INSERT INTO @tab1 (Sk, Postcode) VALUES (1, 'E12 5HH'), (6, 'SW1X 6AA')
INSERT INTO @tab2 (Sk, Coverage) VALUES (1, 'E12'), (1, 'E12 5'), 
                                        (2, 'E1'), (2, 'E11'), (2, 'E13'), 
                                        (3, 'E12 6'),
                                        (4, 'E12 5') ,
                                        (5, 'E12') ,
                                        (7, 'SW1') ,
                                        (8, 'SW1X') 
Run Code Online (Sandbox Code Playgroud)

和我当前的查询

SELECT  S.Sk, 
        S.Postcode, 
        CoverageSk = X.Sk, 
        X.Coverage 
FROM        @tab1   S 
OUTER APPLY (
    SELECT  Sk …
Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database query-performance

4
推荐指数
1
解决办法
398
查看次数

在 SQL Server / Azure SQL 中,有没有办法查看查询生成或想要生成的锁?

我正在尝试调查锁定情况。我知道如何通过查询查看数据库上的当前锁,sys.dm_tran_locks但我想要的是采用特定的 SQL 查询并对其进行某种“分析”以计算它将生成哪些锁。就像锁的执行计划一样?

这也可以是我运行查询然后查看生成了哪些锁的一种方式,对我来说这是一样的。我只需要一种方法来记录/查看生成的日志,因为我目前只能看到所持有的“实时”锁。

我特别需要尽可能多地了解这些锁的详细信息:类型、模式、它所持有的对象等。

我在 Azure SQL 数据库上。

sql-server azure-sql-database locking

4
推荐指数
1
解决办法
4750
查看次数

在此版本的 SQL Server 中无法使用参数调用“SUSER_SNAME”

我正在阅读这篇博客文章,其中包含一个查询,可以让您找到 a 何时DROP被解雇。我更改LIKE 'DROPOBJ%'NOT LIKE 'DROPOBJ%'这样我可以返回更多行:

SELECT [Current LSN]
        ,[Operation]
        ,[Context]
        ,[Transaction ID]
        ,[Description]
        ,[Begin Time]
        ,[Transaction SID]
        ,[Transaction Name]
FROM fn_dblog (NULL,NULL)
INNER JOIN(SELECT [Transaction ID] AS tid
FROM fn_dblog(NULL,NULL)
WHERE [Transaction Name] NOT LIKE 'DROPOBJ%')fd ON [Transaction ID] = fd.tid
Run Code Online (Sandbox Code Playgroud)

该查询在 Azure SQL 数据库上轻松执行,但是当我尝试将SUSER_SNAME博客文章中所述的内容添加到代码中时:

SELECT [Current LSN]
        ,[Operation]
        ,[Context]
        ,[Transaction ID]
        ,[Description]
        ,[Begin Time]
        ,[Transaction SID]
        ,SUSER_SNAME ([Transaction SID]) AS WhoDidIt
FROM fn_dblog (NULL,NULL)
INNER JOIN(SELECT [Transaction ID] …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql azure-sql-database azure

4
推荐指数
1
解决办法
894
查看次数

正确使用索引来优化查询

我有一个包含数百万条记录的 SQL 数据库,当我查询数据时

select * from ActCosts where ScenarioID= 456
Run Code Online (Sandbox Code Playgroud)

这些表有 1,323,718 行,它给了我 50,000 多行,这令人惊讶地花费了 3 多分钟。所以我现在正在考虑如何改进这个性能。我发现一种方法是在“SomeID”列上创建索引。我已经创建了这个索引,但查询需要相同的时间

在此处输入图片说明

执行计划 在此处输入图片说明

索引脚本

CREATE NONCLUSTERED INDEX [IX_ActCost_ScenarioID] ON [dbo].[ActCost] 
(
    [ScenarioID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
GO


ALTER TABLE [dbo].[ActCost] ADD  CONSTRAINT [PK_ActCost] PRIMARY KEY CLUSTERED 
(
    [ActCostID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE …
Run Code Online (Sandbox Code Playgroud)

performance index sql-server azure-sql-database performance-tuning

3
推荐指数
1
解决办法
2092
查看次数

SQL 备份到 Azure 存储失败

我已启动并运行 SQL Server 2014,我正在尝试将特定数据库备份到 Azure 存储。我使用存储帐户名称作为身份和主键作为密码创建了一个凭据。然后我尝试将数据库备份到 URL,但出现以下错误:

TITLE: Microsoft SQL Server Management Studio
------------------------------

Backup failed for Server '*****'.  (Microsoft.SqlServer.SmoExtended)

------------------------------
ADDITIONAL INFORMATION:

System.Data.SqlClient.SqlError: A nonrecoverable I/O error occurred on file "https://******.blob.core.windows.net/backupcontainer/demo_backup_2016_06_22_110957.bak:" Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request.. (Microsoft.SqlServer.Smo)
Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database

3
推荐指数
1
解决办法
3049
查看次数

用于查询的 CLR SQL 与 T-SQL

我知道 CLR 存储过程在过程代码中更有效,而 T-SQL 更适合查询 - 但是我很难决定使用什么来满足我的特定需求,我想知道是否还有其他事情我在做决定时应该考虑一下。

我计划创建的代码涉及查询一组数据、实现一些算法(随着时间的推移会变得更加复杂)以及将数据插入到数据库中。此存储过程将由调度程序部署 - 最有可能是 azure webJobs,因为据我所知 Azure SQL 不支持 db 作业。

为什么我想到使用 C#

假设我可以从我的服务器加载 DAL 库,并利用 OOP - 我想我可以为这个问题实现一个对编码器更友好的解决方案 - 至于性能,我认为它会更好或至少在比较中不明显。

为什么我想到使用 T-SQL

我实际上并不认为这是一个更好的解决方案,但可能有一些我忽略的东西可能是 T-SQL 的一个很好的例子,因为对我来说它没有任何意义。

最重要的是

有没有办法可以创建一个 T-SQL 存储过程,调用一个带有复杂对象作为参数的 C# 存储过程 - 执行我的算法并返回要插入的数据,然后从 T-SQL 插入它?似乎是最优雅、性能最好的 (?) 解决方案(假设它是可能的,并且从 T-SQL 调用 CLR 没有任何缺点)。

sql-server t-sql azure-sql-database sql-clr

3
推荐指数
1
解决办法
2559
查看次数

生成的bug数据脚本如何不在insert语句中设置IDENTITY?

I'm using SQL Server Management Studio to generate sql script (big one) to update Azure DB. The problem is that the script is generated with IDENTITY on and the insert statements are exported with the ID column which as result gives me the errors :

Cannot insert explicit value for identity column in table 'Table_Name' when IDENTITY_INSERT is set to OFF.

My question is how to generate the script right that is will not use IDENTITY on and the insert.

sql-server ssms azure-sql-database

3
推荐指数
1
解决办法
817
查看次数