小编Han*_*non的帖子

SELECT DISTINCT 在一列上,同时返回其他列?

我有一个查询,它使用三个查找表来获取我需要的所有信息。我需要有DISTINCT一列的值,但是我还需要与之相关的其余数据。

我的 SQL 代码:

SELECT acss_lookup.ID AS acss_lookupID,
   acss_lookup.product_lookupID AS acssproduct_lookupID,
   acss_lookup.region_lookupID AS acssregion_lookupID,
   acss_lookup.document_lookupID AS acssdocument_lookupID,
   product.ID AS product_ID,
   product.parent_productID AS productparent_product_ID,
   product.label AS product_label,
   product.displayheading AS product_displayheading,
   product.displayorder AS product_displayorder,
   product.display AS product_display,
   product.ignorenewupdate AS product_ignorenewupdate,
   product.directlink AS product_directlink,
   product.directlinkURL AS product_directlinkURL,
   product.shortdescription AS product_shortdescription,
   product.logo AS product_logo,
   product.thumbnail AS product_thumbnail,
   product.content AS product_content,
   product.pdf AS product_pdf,
   product.language_lookupID AS product_language_lookupID,
   document.ID AS document_ID,
   document.shortdescription AS document_shortdescription,
   document.language_lookupID AS document_language_lookupID,
   document.document_note AS document_document_note,
   document.displayheading AS document_displayheading
FROM …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

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

无法使用我的 Windows 帐户启动 SqlLocalDB 实例

我是管理员,只需运行以下命令:

 sqllocaldb start v11.0
Run Code Online (Sandbox Code Playgroud)

结果:

 Start of LocalDB instance "v11.0" failed because of the following error:
 Error occurred during LocalDB instance startup: SQL Server process failed to sta
 rt.
Run Code Online (Sandbox Code Playgroud)

事件查看器日志事件 ID:528

Windows API 调用 WaitForMultipleObjects 返回错误代码:575。Windows 系统错误消息是:{Application Error} 应用程序无法正确启动 (0x%lx)。单击确定关闭应用程序。在第 3621 行报告。

我尝试了另一个(用户和管理员)帐户,它们没有问题。

我卸载并重新安装了 2012 版的 SQLLocalDB.msi,但我没有运气。你有什么想法和解决办法吗?

sql-server sql-server-2012 sql-server-localdb

14
推荐指数
2
解决办法
6万
查看次数

在哪里可以找到 SQL 标准文档?

在哪里可以找到 ISO SQL 2008 标准的合法副本?

sql-standard

14
推荐指数
2
解决办法
1860
查看次数

TRY-CATCH 未捕获链接服务器错误

我正在设置一个作业来遍历链接服务器列表并对每个服务器执行特定查询。我正在尝试在 TRY-CATCH 块内执行查询,因此如果某个特定服务器出现问题,我可以将其记录下来,然后继续处理其他服务器。

我在循环内执行的查询如下所示:

BEGIN TRY
    SELECT *
    FROM OPENQUERY([server1], 'SELECT 1 AS c;');
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER(), ERROR_MESSAGE();
END CATCH;

PRINT 'We got past the Catch block!';
Run Code Online (Sandbox Code Playgroud)

如果连接到服务器出现问题,代码会立即失败并且不会传输到CATCH块。如果服务器连接但在实际查询中存在错误,例如被零除,那么这会被CATCH块按预期捕获。

例如,我为一个我知道不存在的名称创建了一个链接服务器。执行上述操作时,我只得到:

OLE DB provider "SQLNCLI" for linked server "nonserver" returned message 
    "Login timeout expired".
OLE DB provider "SQLNCLI" for linked server "nonserver" returned message 
    "An error has occurred while establishing a connection to the server. 
    When connecting to SQL Server 2005, this failure may be …
Run Code Online (Sandbox Code Playgroud)

sql-server linked-server

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

sqlpackage.exe 忽略 BlockOnPossibleDataLoss?

我有一个将 BlockOnPossibleDataLoss 设置为 false 的 dacpac,但是当我使用 sqlpackage.exe 运行它时部署被阻止,告诉我“列 [a] 被删除,可能会发生数据丢失。”

但是,当我使用完全相同的部署配置文件并从 Visual Studio 2012 发布时,它会通过。

sql-server sql-server-2012 ssdt visual-studio-2012 data-tier-application

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

sys.partition.rows 列有多准确?

系统视图sys.partitions有一列“行”,它是给定分区中的总行数。对于未分区的表(或只有一个分区,取决于您如何看待它),此列给出了表中的行数。

我很好奇这个列有多准确,我是否可以用它代替SELECT COUNT(1) FROM TableName. 我做了一些实验,创建一个表并添加几千行,删除几百行,再添加几千行等等,而且计数一直都在。但是,我有一张包含大约 7 亿行和几个索引的表。sys.partitions聚集索引的行再次失效,但是其他索引显示出一些细微的变化 (+-20k)。

有谁知道这一行是如何计算的,以及它是否像看起来一样准确?

sql-server sql-server-2008-r2 partitioning count sql-server-2012

14
推荐指数
1
解决办法
4400
查看次数

如何尽可能快地分解此扩展事件 XML?

我在 SQL Server 2008 R2 中创建了一个扩展事件会话。会话运行,并在事件发生时收集事件,正如您所期望的那样。

如果我在事件相对较少的情况下切碎 xml,性能是可以接受的。当我有数千个事件时,需要永远分解 xml。

我知道我做错了什么,我只是没有足够的关于 XML 引擎内部的知识来理解什么。

这是我的扩展事件会话的定义:

IF EXISTS 
(
    SELECT 1 
    FROM sys.server_event_sessions dxs 
    WHERE dxs.name = 'queries'
)
BEGIN
    IF EXISTS (
        SELECT 1 
        FROM sys.dm_xe_sessions dxs 
        WHERE dxs.name = 'queries'
    )
    BEGIN
        ALTER EVENT SESSION queries ON SERVER STATE = STOP;
    END
    DROP EVENT SESSION queries ON SERVER;
END

CREATE EVENT SESSION queries ON SERVER 
ADD EVENT sqlserver.sql_statement_starting
(
    ACTION 
    (
        package0.collect_system_time
        --, package0.event_sequence
        , sqlserver.client_app_name
        , sqlserver.client_hostname
        --, sqlserver.database_name
        , …
Run Code Online (Sandbox Code Playgroud)

xml sql-server sql-server-2008-r2 extended-events

14
推荐指数
1
解决办法
1567
查看次数

堆上的压缩

以下是Microsoft Docs 中的一段:

在堆重建之前,作为 DML 操作的一部分在堆中分配的新页面不会使用 PAGE 压缩。通过移除和重新应用压缩,或者通过创建和移除聚集索引来重建堆。

我不明白为什么会这样。如果我有一个具有指定压缩设置的堆,为什么不将它应用于属于该表的页面?

谢谢

sql-server heap compression

14
推荐指数
1
解决办法
1603
查看次数

指定的网络名称不再可用

我们有一个访问数据库的应用程序(Sql server 2014 企业版)。应用程序调用一个存储过程来访问数据库。一切正常,直到最近开始发送以下错误并停止应用程序。重新启动应用程序可以暂时解决该问题,但稍后会遇到相同的错误。

错误:从服务器接收结果时发生传输级错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。)

我做了很多研究,其中大多数指出是网络问题,但找不到任何实际解决问题的方法。有谁知道我应该在数据库方面做出什么改变来解决这个问题。我非常感谢任何建议。

sql-server connectivity sql-server-2014

14
推荐指数
2
解决办法
6万
查看次数

表中的NULL值自我比较

我总是对一些神秘的 t-sql 行为感到困惑,如下所示

-- Create table t and insert values.  
use tempdb
CREATE TABLE dbo.t (a INT NULL);  
-- insert 3 values
INSERT INTO dbo.t values (NULL),(0),(1);  
GO  
set ansi_nulls off -- purposely turn off, so we can allow NULL comparison, such as null = null
go
-- expect 3 rows returned but only 2 returned (without null value row)
select * from dbo.t where a = a 
Run Code Online (Sandbox Code Playgroud)

这不是关于如何检索表中的所有行,也不是关于避免使用 ANSI_NULLS。

我只是想征求一些见解,为什么 t-sql 会这样。

sql-server t-sql sql-server-2012

13
推荐指数
3
解决办法
369
查看次数