我遇到一些查询有时比从服务器返回结果所需的时间长 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 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 的代理帐户?如果是这样,如何将其设置为代理帐户?
谢谢!
我正在尝试将一些非常简单的数据从csv文件导入到我的 SQL Server 2014 中。
在csv文件中,我只有一列包含数字数据。
我正在使用 SQL Server Management Studio 17.6,连接到我的数据库,然后使用任务Import Flat File功能。
知道问题是什么以及如何解决它吗?
更新:
与提供实际文件不太一样,但这是文件的屏幕截图。它包含电话号码。我混淆了实际数字,这样我们就不会危害任何人的隐私。
假设我在 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 来操作数据并返回我想要的内容。但有没有更简单的方法呢?
注意:无论如何我都无法修改表的架构。我只能在数据库中创建临时表。
我将 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
我最近安装了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可能实现的方法,但不确定要采取什么步骤。
我有一个CTE查询这个
;With CTE_Table as (SELECT ...)
Select * from CTE_Table
Run Code Online (Sandbox Code Playgroud)
现在我尝试将此结果保存到table variable或temporary 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 table或table variable?
我使用SQL Server 2014.
sql t-sql common-table-expression table-variable sql-server-2014
我在编写本文时已将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
我有一个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)
我一无所获.
我在表中有一个下面的数据。
需要如下输出。
我尝试了以下逻辑,但是在我的情况下,那些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
sql-server-2014 ×10
sql-server ×8
sql ×4
.net-core ×1
azure ×1
csv ×1
database ×1
dataframe ×1
ef-core-2.1 ×1
excel ×1
pandas ×1
ssms-2014 ×1
t-sql ×1
xp-cmdshell ×1