我对此做了很多研究.
我正在尝试使用SQL Server 2014恢复数据库,并且它一直保持100%的挂起状态.
很多人建议解决方案是确保使用RECOVERY选项进行恢复.
我试过了,它仍然挂在100%.我已尝试通过SSMS还原对话框,我尝试运行以下SQL语句:
USE [master]
RESTORE DATABASE [MyDB]
FROM DISK = N'C:\MyDB_backup_2015_05_05_010004_1506557.bak'
WITH
FILE = 1,
MOVE N'MyDB_Data' TO N'F:\MSSQL\DATA\MyDB.mdf',
MOVE N'MyDB_Log' TO N'F:\MSSQL\DATA\MyDB_1.ldf',
NOUNLOAD,
REPLACE,
RECOVERY,
STATS = 2
GO
Run Code Online (Sandbox Code Playgroud)
当我通过以下方式检查命令的状态时:
SELECT r.status, r.command, r.wait_type, r.percent_complete
FROM sys.dm_exec_requests r
WHERE r.command like '%restore%' or r.command like '%backup%'
Run Code Online (Sandbox Code Playgroud)
我明白了:
status: suspended
command: RESTORE DATABASE
wait_type: BACKUPTHREAD
percent_complete: 100
Run Code Online (Sandbox Code Playgroud)
从我的阅读中暗示RESTORE正在等待BACKUP完成,但是没有从我的查询返回到sys.dm_exec_requests的BACKUP命令
编辑:再次尝试并运行上述查询以从头开始观察RESTORE的进度后,我可以看到'percent_complete'值正在稳步增加,尽管'status'仍然是'暂停'并且'wait_type'仍为'BACKUPTHREAD'.
因此,尽管它被"暂停",它实际上仍在执行RESTORE.
所以我很茫然......
任何人都有任何想法在这里发生了什么或任何有关如何诊断问题的提示?
干杯!
问题:在MS SQL 2014中从SQL查询生成JSON的最佳解决方案是什么?我创建了一个程序,但速度非常慢.
我的例子:
DECLARE @customers xml;
DECLARE @json NVARCHAR(max);
SET @customers = (SELECT * FROM dbo.Customers FOR XML path, root)
EXEC [dbo].[HTTP_JSON] @customers, @json
EXEC [dbo].[HTTP_JSON](@Shopping)
Create PROCEDURE [dbo].[HTTP_JSON]
@parameters xml, @response NVARCHAR(max) OUTPUT
WITH EXEC AS CALLER
AS
set @response = (SELECT Stuff(
(SELECT * from
(SELECT ',
{'+
Stuff((SELECT ',"'+coalesce(b.c.value('local-name(.)', 'NVARCHAR(MAX)'),'')+'":"'+
b.c.value('text()[1]','NVARCHAR(MAX)') +'"'
from x.a.nodes('*') b(c)
for xml path(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)')
,1,1,'')+'}'
from @parameters.nodes('/root/*') x(a)
) JSON(theLine)
for xml path(''),TYPE).value('.','NVARCHAR(MAX)' )
,1,1,''))
GO
Run Code Online (Sandbox Code Playgroud) 我创建了以下索引来覆盖select top语句.
-- Column A, B have type of int
create unique index ix_ on T (A, B) with (data_compression = page)
-- tried to create non-unique index too and the execution plan is the same
select top 20 A, B from T order by A, B -- 19 seconds
select top 20 A, B from T -- return result instantly
Run Code Online (Sandbox Code Playgroud)
但是,它仍然需要一段时间(我的桌子上有19万秒,有5000万行),执行计划显示还有"排序"?
执行计划显示
选择(成本:0%)←顶部(成本:0%)←平行(聚集流)(成本:0%)←排序(前N排序)成本:93%←索引扫描(非聚集)[T.ix_]成本:7%
执行计划
<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.2" Build="12.0.4100.1" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
<BatchSequence>
<Batch>
<Statements>
<StmtSimple StatementCompId="1" StatementEstRows="20" …Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server 2014.我目前正在尝试将数百万人员应用程序记录合并到一个人事记录中.
记录包含以下列:
ID, First_Name, Last_Name, DOB, Post_Code, Mobile, Email
Run Code Online (Sandbox Code Playgroud)
一个人可以多次输入他们的详细信息,但由于手指发胖或欺诈,他们有时可能会输入错误的细节.
在我的例子克里斯托弗在5倍充满了他的细节,First_Name,Last_Name,DOB总是正确的,Post_Code,Mobile并Email含有多种内涵.
我想要做的是在这种情况下获取与此组相关联的min(id)84015283并将其放入新表中,这将是主键,然后您将看到与其关联的其他ID.
例子
NID CID
------------------
84015283 84015283
84015283 84069198
84015283 84070263
84015283 84369603
84015283 85061159
Run Code Online (Sandbox Code Playgroud)
它变得有点复杂的地方是,2个不同的人可以拥有相同的First_Name,Last_Name并且DOB,至少有一个其他字段必须根据我的例子将" post_code,mobile或email" 匹配到组内的另一个记录.
虽然first_name,last_name,DoBID的84015283,84069198,84070263. 84015283之间的匹配,84069198是相同的,这样他们就匹配没有问题,84070263场的邮政编码比赛,在移动到前一个创纪录的84369603场比赛和85061159轮在以前的移动/电子邮件的比赛,但不是post_code.
如果将NID放在原始数据集中更容易,我可以使用它,而不是将它全部放在一个单独的表中.
经过一番谷歌搜索并尝试着解决这个问题,我相信使用"合并"可能是实现我目标的好方法,但我担心由于涉及的记录数量需要很长时间.
此外,任何例程都必须在随后的新记录中运行.
如果有人可以提供帮助,我已经列出了该示例的代码
DROP TABLE customer_dist
CREATE TABLE [dbo].customer_dist
(
[id] [int] NOT NULL,
[First_Name] [varchar](50) NULL, …Run Code Online (Sandbox Code Playgroud) 我可以通过SQLcmd传递连接字符串吗?
我想在使用sqlcmd时通过连接字符串更改应用程序名称和故障转移伙伴(用于镜像).
现在.当我使用sqlcmd时,SQLcmd在sys.sysprocesses结果中设置我的连接的应用程序名称.
sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012 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 …
这是一个奇怪的问题,但是对于这种行为的解释我有点沮丧:
背景:(不需要知道)
首先,我正在编写一个快速查询并粘贴一个列表,UNIQUERIDENTIFIER并希望它们在一个WHERE X IN (...)子句中是统一的.在过去,我UNIQUERIDENTIFIER在列表顶部使用了一个空(全零),以便我可以粘贴一组UNIQUERIDENTIFIER看起来像这样的统一:,'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'.这一次,为了避免点击零,我插入了一个NEWID()认为碰撞几率几乎不可能的想法,令我惊讶的是,这导致了数千个额外的结果,比如表的50 +%.
开始问题:(你需要知道的部分)
这个查询:
-- SETUP: (i boiled this down to the bare minimum)
-- just creating a table with 500 PK UNIQUERIDENTIFIERs
IF (OBJECT_ID('tempdb..#wtfTable') IS NOT NULL) DROP TABLE #wtfTable;
CREATE TABLE #wtfTable (WtfId UNIQUEIDENTIFIER PRIMARY KEY);
INSERT INTO #wtfTable
SELECT TOP(500) NEWID()
FROM master.sys.all_objects o1 (NOLOCK)
CROSS JOIN master.sys.all_objects o2 (NOLOCK);
-- ACTUAL QUERY:
SELECT *
FROM #wtfTable
WHERE [WtfId] IN …Run Code Online (Sandbox Code Playgroud) sql sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014
是否可以更改 SQL Server 中 localdb 实例的用户帐户?我们更改了域,它使用的是我的旧域帐户,因此我无法再登录。另外,我不相信您可以使用 SQL 身份验证登录,因此 sa 帐户不起作用,我尝试过。我正在使用 SQL Server 2014 和 2016。
问:如何根据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) 我正在使用2星型模式数据仓库,每个数据仓库都包含一个事实表,而维度表位于单独的数据库中(两个数据仓库都使用一个数据库)。
I created a multidimensional analysis project for each data warehouse:
When trying to browse the second cube everything is working fine, but when I tried to browse the dimension or to add …
sql-server ssas dimension sql-server-2014 multidimensional-cube