标签: sql-server-2014

MS SQL 查询有时需要多花 500 毫秒

我遇到一些查询有时比从服务器返回结果所需的时间长 500 毫秒的情况。准确地说:正常响应时间为 5-6 毫秒,与服务器的 ping 时间相同。SQL 探查器的正常查询持续时间约为 1 毫秒。有时响应时间会上升到500ms左右。从来没有 300 或 400 毫秒,总是非常接近 500 毫秒。SQL Profiler 报告的实际查询持续时间仍然只有 1 毫秒左右。我使用 Wireshark 分析了网络流量,发现当响应时间为 500 毫秒时,我几乎立即收到请求包的 ACK(在 5-6 毫秒 ping 时间内)。这一定意味着服务器快速接收请求并且这不是与网络相关的问题,对吧?

因此,由于某种原因,SQL 服务器收到请求,但在执行查询之前会等待,或者执行 SQL 探查器的“持续时间”中未包含的其他操作。看起来很奇怪,它总是在 500 毫秒左右 - 这会给任何人带来任何关联吗?PS:我也觉得SQL Server这么快发送ACK可能有点奇怪?通常我希望它等待更长的时间,事实上,当响应时间很短时,就不会发送 ACK(只是搭载在响应包上)。

编辑:我正在循环测试这个。大多数响应速度很快,只有一小部分有这种延迟。延误通常是分组的。这是一个生产服务器,我认为它可能与同时发生的其他请求有关,但令我困惑的是为什么它总是有 500 毫秒的延迟,以及为什么它没有包含在分析器的“持续时间”列中。

sql-server sql-server-profiler sql-server-2014

5
推荐指数
1
解决办法
2252
查看次数

SQL Server 2014:对 xp_cmdshell 代理帐户使用 gMSA?

我们正在运行 SQL Server 2014。我们希望使用 gMSA 作为 xp_cmdshell 的代理帐户。

我尝试运行以下命令:

EXEC sys.sp_xp_cmdshell_proxy_account 'gmsaNameGoesHere$', ''
Run Code Online (Sandbox Code Playgroud)

但是,它需要密码。

我尝试运行以下命令:

CREATE CREDENTIAL ##xp_cmdshell_proxy_account## WITH IDENTITY = 'gmsaNameGoesHere$'
Run Code Online (Sandbox Code Playgroud)

它运行了!但是,当用户尝试通过代理帐户运行 xp_cmdshell 时,他们会被告知:

消息 15153,级别 16,状态 1,过程 xp_cmdshell,第 3 行 xp_cmdshell 代理帐户信息无法检索或无效。验证“##xp_cmdshell_proxy_account##”凭据是否存在并包含有效信息。

是否可以在 SQL Server 2014 中使用 gMSA 作为 xp_cmdshell 的代理帐户?如果是这样,如何将其设置为代理帐户?

谢谢!

sql sql-server xp-cmdshell sql-server-2014

5
推荐指数
0
解决办法
417
查看次数

将 CSV 导入 SQL Server 时无法在输入文件中找到模式

我正在尝试将一些非常简单的数据从csv文件导入到我的 SQL Server 2014 中。

csv文件中,我只有一列包含数字数据。

我正在使用 SQL Server Management Studio 17.6,连接到我的数据库,然后使用任务Import Flat File功能。

这是我选择文件并单击“下一步”时看到的错误: 在此输入图像描述

知道问题是什么以及如何解决它吗?

更新:

与提供实际文件不太一样,但这是文件的屏幕截图。它包含电话号码。我混淆了实际数字,这样我们就不会危害任何人的隐私。

在此输入图像描述

sql-server csv excel sql-server-2014

5
推荐指数
1
解决办法
9205
查看次数

从 DataFrame 插入时获取身份密钥

假设我在 SQL Server 中有下表:

CREATE TABLE Users
(
     UserID          int IDENTITY(1,1) PRIMARY KEY
,    UserName        varchar(50)
,    InsertDate      datetime2 DEFAULT GETDATE()
)
Run Code Online (Sandbox Code Playgroud)

在Python中,我想从DataFrame插入到这个表中并取回UserID我刚刚插入的行

import numpy as np
import pandas as pd
import sqlalchemy as sa

engine = sa.create_engine(...)
df = pd.DataFrame({'UserName': ['Alice', 'Bob']})
df.to_sql('Users', engine, if_exists='append', index=False)
Run Code Online (Sandbox Code Playgroud)

数据正在进入数据库。但是我怎样才能取回UserID我刚刚插入的行呢?我考虑编写一个包装函数,首先插入到临时表中,然后使用 T-SQL 来操作数据并返回我想要的内容。但有没有更简单的方法呢?

注意:无论如何我都无法修改表的架构。我只能在数据库中创建临时表。

dataframe pandas sql-server-2014

5
推荐指数
1
解决办法
1552
查看次数

为什么在数据库中自动创建临时表

我将 Entity Framework Core 2.1 与 .NET Core 2.0 结合使用。我正在使用代码优先的方法。我看到有时在数据库中创建临时表。

这是问题的屏幕截图。

在此输入图像描述

Odds 是我使用 EFCore 创建的表,但是当应用程序连续运行一段时间后,这些临时表就会被创建,我也可以在这些表中看到一些数据。

任何人都可以帮助我吗?我该如何解决这个问题?

sql-server ef-code-first sql-server-2014 .net-core ef-core-2.1

5
推荐指数
0
解决办法
183
查看次数

将Server SQL Server 2014链接到SQL Server版本8

我最近安装了SQL Server 2014 Express,需要创建链接服务器。我已经在SQL Server Management Studio中尝试了此操作(来自object explorer - server objects - linked servers - add linked server)。

通过服务器类型“ SQL Server”直接连接服务器或通过在“其他数据源”中指定连接属性时,然后使用Microsoft OLE DB Provider for SQL Server并填写其他详细信息,我收到以下错误。

链接服务器已创建,但连接测试失败。SQL Server本机客户端11.0不支持与SQL Server 2000或更早版本的连接。

我需要能够在不同服务器上的两个数据库之间创建联合查询,实现此目的的最佳方法是什么?我需要连接的数据库是版本8(SQL Server 2000),非常老。我已经阅读了通过事务处理SQL可能实现的方法,但不确定要采取什么步骤。

sql-server sql-server-2014 sql-server-2014-express

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

如何将查询的CTE输出保存到临时表或表变量中

我有一个CTE查询这个

;With CTE_Table as (SELECT ...)
Select * from CTE_Table
Run Code Online (Sandbox Code Playgroud)

现在我尝试将此结果保存到table variabletemporary table.如果我试试

Declare @Table table
(...)
INSERT INTO @Table (...)
HER I PUT THE CODE ABOVE
Run Code Online (Sandbox Code Playgroud)

我得到一个incorrect syntax error周围的WITH声明.我猜这个Insert Into命令期望Select statement代替a 而不是;WITH同样的代价Create Table.我一直在寻找解决方案,但我找到的所有解决方案都没有涉及Select Statement;With.如何将上面显示的输出变为temporary tabletable variable

我使用SQL Server 2014.

sql t-sql common-table-expression table-variable sql-server-2014

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

SQL Server Management Studio 2014:无法在Azure SQL数据库V12上查看存储过程

我在编写本文时已将SQL Server Management Studio更新到最新版本 - 12.0.4432.0 - 这是带有CU3的SP1和其他错误修复.我的Azur SQL数据库版本是12.0.2000.8

我无法通过GUI查看任何存储过程,当我尝试时出现此错误(所有其他功能似乎正常工作):

标题:Microsoft SQL Server Management Studio

无法检索此请求的数据.(Microsoft.SqlServer.Management.Sdk.Sfc)

如需帮助,请单击:http:
//go.microsoft.com/fwlink?ProdName = Microsoft%20SQL%20Server&LinkId = 20476

附加信息:

未知属性IsNativelyCompiled(Microsoft.SqlServer.Management.Sdk.Sfc)

帮助>关于

Microsoft SQL Server Management Studio                      12.0.4432.0
Microsoft Analysis Services Client Tools                        12.0.4432.0
Microsoft Data Access Components (MDAC)                     6.1.7601.17514
Microsoft MSXML                     3.0 5.0 6.0 
Microsoft Internet Explorer                     9.11.9600.17801
Microsoft .NET Framework                        4.0.30319.42000
Operating System                        6.1.7601
Run Code Online (Sandbox Code Playgroud)

sql-server azure sql-server-2014 ssms-2014 azure-sql-database

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

如何在SQL Server查询中一起使用LIKE和NOT LIKE

我有一个SQL Server表Users,其中codename包含一个包含大量记录的列,例如:

...
[LP]Luis
JoseLuis
[LP]Pedroso
Luis
PedroLuis
[LP]Maria
CarlosJose
MariaJose
[LP]Carlos
Pedro
...
Run Code Online (Sandbox Code Playgroud)

我需要查询一个忽略所有codename包含的搜索表单[LP]

我写了并运行以下查询:

SELECT TOP (15)* 
FROM [Users] 
WHERE [codename] LIKE '%Luis%'
AND [codename] NOT LIKE '%[LP]%'
Run Code Online (Sandbox Code Playgroud)

此查询不返回任何内容.

我想得到(在这个例子中)记录:

Luis
PedroLuis
JoseLuis
Run Code Online (Sandbox Code Playgroud)

如果我查询:

SELECT TOP (15) * 
FROM [Users] 
WHERE [codename] LIKE '%Luis%'
Run Code Online (Sandbox Code Playgroud)

我明白了:

[LP]Luis
JoseLuis
Luis
PedroLuis
Run Code Online (Sandbox Code Playgroud)

如果我添加到查询:

AND [codename] NOT LIKE '%[LP]%'
Run Code Online (Sandbox Code Playgroud)

我一无所获.

sql database sql-server sql-server-2014

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

多行成单列

我在表中有一个下面的数据。

在此处输入图片说明

需要如下输出。

在此处输入图片说明

我尝试了以下逻辑,但是在我的情况下,那些Item#列是NVARCHAR类型的,因此结果是MAX聚合函数给出了未知数。

SELECT ID, Item1, Item2, Item3, Item4, Item5
FROM(
SELECT ID, MAX(Item1), MAX(Item2), MAX(Item3), MAX(Item4), MAX(Item5)
FROM Sample_Table WITH(NOLOCK)
) A
WHERE A.ID = '0001_11'
GROUP BY A.ID
Run Code Online (Sandbox Code Playgroud)

请帮助我获得此结果。提前致谢。

sql sql-server sql-server-2008 sql-server-2012 sql-server-2014

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