我看过很多关于使用集成安全性(Windows 身份验证)的 OPENROWSET 的文章,但我无法让它为我工作。
使用 SQL Server 身份验证工作正常:
select *
FROM
OPENROWSET('SQLOLEDB',
'myserver';'monitor';'#J4g4nn4th4#',
'SELECT GETDATE() AS [RADHE]')
Run Code Online (Sandbox Code Playgroud)
但我尝试使用 Windows 身份验证运行相同的查询,但它不起作用:
select *
FROM
OPENROWSET('SQLOLEDB',
'myserver';'Integrated Security=SSPI',
'SELECT GETDATE() AS [RADHE]')
Run Code Online (Sandbox Code Playgroud)
有人可以发布一个有效的示例吗?
这是一篇描述 OPENROWSET 用法的好文章。
使用 OPENROWSET 的工作脚本示例 - 请阅读评论
----------------------------------------------------------------
-- this works - linked server REPLON1
----------------------------------------------------------------
select *
FROM
OPENROWSET('SQLOLEDB',
'Server=REPLON1;Trusted_Connection=yes;',
'SELECT GETDATE() AS [RADHE]')
select *
FROM
OPENROWSET('SQLOLEDB',
'Server=REPLON1;Trusted_Connection=yes;',
'SET FMTONLY OFF select * from sys.dm_exec_requests')
SELECT a.*
FROM OPENROWSET('SQLOLEDB', 'server=replon1;Trusted_Connection=yes;', 'SET
FMTONLY OFF select * …Run Code Online (Sandbox Code Playgroud) security sql-server linked-server sql-server-2012 openrowset
我尝试从 SQL Server 2012 (11.0.5058) 添加在 SQL Server 2008 R2 (10.50.4000) 上运行的链接服务器。
我不断收到此错误:
链接服务器已创建,但连接测试失败。您想保留链接服务器吗?

有谁知道如何解决这个问题?
不同版本数据库之间搭建链接服务器有没有限制?
好的,使用 tsql 代码创建了这个链接服务器
EXEC sp_addlinkedserver
@server='xxxLinkedServer', -- here you can specify the name of the linked server
@srvproduct='',
@provider='sqlncli', -- using SQL Server Native Client
@datasrc='xxxxxx', -- add here your server name
@location='',
@provstr='',
@catalog='smpro5' -- add here your database name as initial catalog (you cannot connect to the master database)
-- Add credentials and options to this linked server
EXEC sp_addlinkedsrvlogin
@rmtsrvname = …Run Code Online (Sandbox Code Playgroud) 正在使用的服务器:SQL Server 2012 SP3
我刚刚收到一个奇怪的错误(很奇怪,因为它之前工作过)
could not connect to server LNK_SRV because sa is not defined as a remote login
Run Code Online (Sandbox Code Playgroud)
sys.servers 说 LNK_SRV 的 is_linked = 0 - 不知道为什么。返回结果如下
select top 10 * from LNK_SRV.DBName.dbo.TblName
Run Code Online (Sandbox Code Playgroud)
但手续却失败了
exec LNK_SRV.DBName.dbo.ProcName
Run Code Online (Sandbox Code Playgroud)
在我们删除链接服务器并重新添加它之前,它工作正常。
此外,LNK_SRV 也用于复制。
注意:我知道 sa 很糟糕。很快就会得到处理。
在 SQL Server 中,我们可以设置多个电子邮件配置,其中只有一些设置为默认值。
我尝试使用以下查询来获取帐户列表:
select *
from msdb.dbo.sysmail_profile p
join msdb.dbo.sysmail_profileaccount pa on p.profile_id = pa.profile_id
join msdb.dbo.sysmail_account a on pa.account_id = a.account_id
join msdb.dbo.sysmail_server s on a.account_id = s.account_id
Run Code Online (Sandbox Code Playgroud)
有什么方法可以识别默认邮件配置文件吗?
我现在看着这个几分钟,找不到提到这个的线程。
我想从 SQL Server 上的数据库查询当前使用的空间和可用空间。当我在 SQL Server Management Studio 中打开数据库上的属性对话框时,我查询的数字应该与我看到的数字相匹配,如下所示:
所以我浏览了一下,发现我可以sys.database_files像这样查询(从这里):
SELECT
DB_NAME() AS DbName,
name AS FileName,
size/128.0 AS CurrentSizeMB,
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS FreeSpaceMB
FROM sys.database_files;
Run Code Online (Sandbox Code Playgroud)
这让我得到这个结果:
DbName 文件名 CurrentSizeMB FreeSpaceMB 数据库名称 数据库名称 17338.000000 16795.312500 数据库名 数据库名_日志 351.000000 331.234375
试图从上一个对话框中识别我的号码:
17338并351让我达到17689对话框列出的大小16795.312500几乎减少了半 MB我该怎么做才能获得与属性对话框显示的可用空间完全相同的数字?
我是否以错误的方式使用了查询/公式,或者由于某些舍入(将页面/范围转换为 MB...),此时根本不可能?
这是计划:https : //www.brentozar.com/pastetheplan/?id=rkM8d7ONS
我最感兴趣的是如何摆脱懒惰的线轴?
这是查询:
SELECT DISTINCT
SM.Security_ID 'Security_ID',
Leg.Leg_Type 'Leg_Type',
Leg.Leg_Side 'Leg_Side',
Ct.Security_Type AS 'Swap_Type',
Leg.CDX_Indicator AS 'CDS_CDX_Flag',
SM.Currency AS 'Notional_Currency',
Ct.Cross_Currency_Flag AS 'Cross_Currency_Flag',
Ct.Custom_Overrides AS 'Special_Instructions',
Leg.Protection_Indicator AS 'Buy_Sell_Protection',
Leg.Commission_Direction AS 'Commission_Direction',
Leg.Dividend_Payment_Indicator AS 'Undl_Asset_Dividend_Flag',
SM.Issue_Date AS 'Effective_Date',
SM.Maturity_Date AS 'Maturity_Date',
Leg.Settlement_Frequency 'Settlement_Frequency',
Leg.Reset_Frequency 'Reset_Frequency',
Leg.Roll_Day AS 'Roll_Day',
Leg.Reset_Business_Day_Convention AS 'Reset_Business_Day_Convn',
Leg.Settlement_Business_Day_Convention AS 'Settlement_Business_Day_Convn',
Leg.First_Payment_Date AS 'First_Period_End_Date',
Leg.Day_Count AS 'Day_Count_Basis',
Leg.Interest_Rate AS 'Interest_Rate',
Leg.Spread AS 'Spread',
Leg.CDX_Attachment AS 'CDX_Attachment',
Leg.CDX_Detachment AS 'CDX_Detachment',
Leg.Factor AS 'Factor',
Leg.Commission AS …Run Code Online (Sandbox Code Playgroud) 我们有一个实时的 ASP.Net 应用程序,它被大约 1000 个并发用户使用。在这个应用程序中,我们使用了连接池。在 web.config 中定义了 2 个不同名称的连接字符串,但我们正在调用相同的数据库。
<add key="connection1" value="server=1.1.1.1;USER ID=**;pwd=**;database=test;Max Pool Size=500;Min Pool Size=50;Connection Timeout = 300; Pooling='true'" />
<add key="connection2" value="server=1.1.1.1;USER ID=**;pwd=**;database=test;Max Pool Size=500;Min Pool Size=50;Connection Timeout = 300; Pooling='true'"/>
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我们正在打开一个关闭连接的每个地方,如下所示
try{
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
}
catch(Exception ex)
{
}
finally{connection.close()}
Run Code Online (Sandbox Code Playgroud)
现在的问题是当我使用 sp_who2 检查数据库时,我看到大约 1000 或更多的睡眠会话,并且每个记录程序名称是“.Net sql server Provider”。我浏览了 MSDN,发现如果我们使用连接池,那么连接会保持打开状态直到 4-8 分钟。所以我现在有点困惑,如果我只使用 2 个连接字符串和连接池,那么为什么我们看到这么多休眠连接,我想它应该只有 2 个?有人可以在这种情况下帮助我并提出正确的建议吗?我们怎样才能最大限度地减少睡眠时间。也不确定是应用程序池(IIS 服务器)错误还是应用程序错误?请帮忙。
谢谢,
对于我们的一个数据库,如下所示的查询非常慢。
由于安全原因,我无法分享实际的查询或计划,但只是想知道如何编写查询如下
SELECT [Id]
,[AboutMe]
,[Age]
,[CreationDate]
,[DisplayName]
,[DownVotes]
,[EmailHash]
,[LastAccessDate]
,[Location]
,[Reputation]
,[UpVotes]
,[Views]
,[WebsiteUrl]
,[AccountId]
FROM [StackOverflow2010].[dbo].[Users]
WHERE DisplayName IN (
SELECT DisplayName from dbo.Users
WHERE CAST(LastAccessDate AS DATE) = CAST ('20160814' AS DATE)
AND CreationDate>= DATEADD (DAY, -30,LastAccessDate)
AND CreationDate<= LastAccessDate)
Run Code Online (Sandbox Code Playgroud)
在 stackoverflow 数据库中,这不会返回任何行,但对于我们现有的 6 TBS 数据库,它真的很慢。
CreationDate和LastAccessdate列都是日期时间 (10)
和 DisplayName是VARCHAR(50)
如果以上可以重写,请建议我如何提高性能
sql-server sql-server-2012 query-performance performance-tuning
我试图让一些代码运行经过时间测试的“执行,谷歌搜索红色文本,做SO所说的,重复”方法,我注意到错误处理程序的行计数通常是错误的。
例如,在这个存储过程中它是正确的:
create procedure why_it_be_like_dis
as
select * from INFORMATION_SCHEMA.tables where column_name like '%bananna%'
Run Code Online (Sandbox Code Playgroud)
但在现实世界的例子中,它将关闭:
问题:为什么行号总是不匹配?
错误信息:
消息 207,级别 16,状态 1,过程删除 from_and_load,第 21 行 [批处理开始第 7 行] 列名“SRGY_STM_LKP_ID”无效。
完整版:
USE [SRGRY_DMART_ETL]
GO
/****** Object: StoredProcedure [dbo].[delete from_and_load] Script Date: 7/22/2020 8:20:28 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[delete from_and_load]
AS
BEGIN
DECLARE @btch_start DATETIME
,@btch_end DATETIME
SELECT @btch_start = getdate()
EXEC [dbo].[snapshot_constraints]
EXEC dbo.drop_all_constraints
delete from [dbo].[CASE_2_PAT_CASE_BRG];
delete from [dbo].[CASE_2_PVDR_BRG];
delete from [dbo].[CASE_2_DGNS_BRG]; …Run Code Online (Sandbox Code Playgroud) 可能更多的是 SQL Management Studio 问题而不是 SQL 本身,但是当我运行以下简单查询时:
SELECT results = 'Foo' + CHAR(13) + CHAR(10) + 'Bar'
Run Code Online (Sandbox Code Playgroud)
根据我选择“结果到网格”还是“结果到文本”,我似乎会得到不同的结果。
将 SSMS 设置为“结果到文本”后,我得到(如预期):
results
--------
Foo
Bar
(1 row affected)
Run Code Online (Sandbox Code Playgroud)
但是将 SSMS 设置为“结果到网格”,然后复制并粘贴结果,我得到
Foo Bar
Run Code Online (Sandbox Code Playgroud)