AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-3351

Ben Brocka's questions

Martin Hope
Ben Brocka
Asked: 2012-08-30 13:42:28 +0800 CST

如何更改跟踪模板的目标服务器类型?

  • 8

我有一个有人希望我运行的 .tdf SQL Server Profiler 跟踪模板,但该模板的目标是 SS 2008 R2。虽然我的 SSMS 是 2008 R2,但我需要跟踪的服务器是 SS 2005。在尝试跟踪服务器时,服务器类型被锁定(从实际服务器生成)所以我不能只选择我需要的模板,而它被​​标记为不同的SS版本..

跟踪模板属性窗口

如何更改交易模板所针对的服务器类型?我已经尝试过File > Templates > Edit Templates...,但似乎没有改变这一点的选项。是否可以更改目标服务器版本,或者是否必须从头开始重新制作整个跟踪?

sql-server profiler
  • 3 个回答
  • 3674 Views
Martin Hope
Ben Brocka
Asked: 2012-05-16 13:58:42 +0800 CST

将多行中的列合并为单行

  • 14

customer_comments由于数据库设计,我将一些拆分为多行,对于报告,我需要将comments每个唯一的行合并id为一行。我之前尝试过使用SELECT 子句和 COALESCE 技巧中的这个分隔列表,但我不记得它并且一定没有保存它。在这种情况下,我似乎也无法让它工作,似乎只能在一行上工作。

数据如下所示:

id  row_num  customer_code comments
-----------------------------------
1   1        Dilbert        Hard
1   2        Dilbert        Worker
2   1        Wally          Lazy

我的结果需要如下所示:

id  customer_code comments
------------------------------
1   Dilbert        Hard Worker
2   Wally          Lazy

所以对于每个row_num实际上只有一行结果;注释应按row_num. 上面的链接SELECT技巧可以将特定查询的所有值作为一行获取,但我不知道如何使它作为SELECT吐出所有这些行的语句的一部分工作。

我的查询必须自己遍历整个表并输出这些行。我没有将它们组合成多列,每行一个,所以PIVOT似乎不适用。

sql-server sql-server-2005
  • 4 个回答
  • 170549 Views
Martin Hope
Ben Brocka
Asked: 2012-04-19 10:25:01 +0800 CST

识别与主行不匹配的行

  • 3

我正在将来自不同服务器上不同数据库的一堆表与主记录进行比较。我需要知道由 标识的哪些服务器locationID具有不匹配的行,因为它们可能需要维护。

我有一个简单的EXCEPT查询,我比较了一个表,其中每一行都是来自每个服务器的配置;table1每台服务器有一行,所有配置加上locationID这是一个告诉我它是哪台服务器的列。我将所有这些与table1_master具有正确设置的表进行比较,但我排除了它,locationID因为它不匹配。

下面的简单查询:

SELECT everything, but, locationID
FROM table1
EXCEPT
SELECT everything, but, locationID
FROM table1_master

我比较所有服务器时只有一个主行,我没有locationID在这里选择它。

这是我正在比较的行的一个示例。每个都有一个主键、一个列varchar和一个包含数十个列的巨大列表。我想比较除LocationID 之外的所有列,但我需要 LocationID 来识别行。

LocationID             setting    setting    setting     setting
CS02      C            Y           Y         Y           Y
CS03      C            Y           Y         Y           Y
CS06      C            Y           N         Y           Y

在此示例中,CS02 是我的主记录,因此由于 CS02 和 CS03 中的所有设置都相同,因此这些行不会显示,但 CS06 会显示。但在我的EXCEPT查询中,我实际上并没有捕获 LocationID,所以我实际上并不知道返回了哪一行。

这会返回我需要的行,但不是locationID,所以我不知道哪些行是错误的。有什么方法可以locationID在踢出匹配行的同时包含在结果集中?

我想到的解决方案是为table1_master表中的每个服务器创建一行,因此每个都locationID被表示,但除此之外它们都具有相同的数据。然后我的EXCLUDE查询应该返回locationID和我的信息,但这是最好的方法吗?

sql-server sql-server-2005
  • 3 个回答
  • 1463 Views
Martin Hope
Ben Brocka
Asked: 2012-02-11 10:53:01 +0800 CST

为什么 IDENTITY_INSERT ON 一次只允许在一张表上使用?

  • 20

就是IDENTITY_INSERT一次只能在一个数据库表中设置为 ON,但是为什么呢?由于IDENTITY列不是全局唯一的,我想不出同时将身份插入多个表可能导致的任何危险情况(至少不比通常使用 IDENTITY INSERT 捏造更危险)。

IDENTITY INSERT 应该很少使用,但是硬限制的原因是什么?

sql-server
  • 2 个回答
  • 14131 Views
Martin Hope
Ben Brocka
Asked: 2012-01-10 07:32:22 +0800 CST

集群键上的 ORDER BY 会影响性能吗?

  • 6

假设我有一个聚集在PrimaryKey上的表,并且在所有情况下我都希望我的结果按PrimaryKey排序,所以我还总是ORDER BY PrimaryKey在所有查询中。

这ORDER BY会以任何方式影响性能,还是因为行已经按此顺序排列而被分析器忽略?

我正在使用 SQL Server 2005 数据库。

sql-server performance
  • 3 个回答
  • 3352 Views
Martin Hope
Ben Brocka
Asked: 2011-12-15 07:18:33 +0800 CST

每个分区的前 2 行来自绝对值日期差异

  • 1

我在非规范化数据库中有一个安全摄像机镜头数据库。我有多个位置,这些位置有多个拍摄多张图像的相机。

Location + Camera + image capture_date 是聚簇主键,也是目前表上唯一的索引。踢球者正在搜索单个摄像头,SSMS 耗时 <1 毫秒,我的 Web 应用程序耗时约 70 毫秒。我目前工作的 CTE 解决方案需要大约 3 分钟的时间来处理三个摄像头。

为了概述某个位置的摄像机,我需要从最接近给定日期(例如当前日期)的每个摄像机中选择 2 张图像。因此,我需要一个绝对值(搜索日期之前或之后的日期同样有效),因此我按最小的ABS(@date -capture_date).

这是当前代码。它可以工作,但它不是 SARGable,而且速度非常慢。我还只需要 CTE 中每个摄像头的前 2 行,因为每个分区可能有数十万张图像。

DECLARE @date datetime,
        @location varchar(4)
SET     @date ='2011-12-13 12:00:00'
SET     @location='CS01';
WITH CTE AS (
    SELECT
        *,
        ROW_NUMBER() OVER (PARTITION  BY Camera ORDER BY  abs(datediff(second,@date, [capture_date]))) AS Ranking
    FROM rs_camera_pictures
    WHERE 
        location=@location)
SELECT * FROM CTE WHERE Ranking <= 2
sql-server sql-server-2005
  • 4 个回答
  • 1396 Views
Martin Hope
Ben Brocka
Asked: 2011-11-18 09:37:22 +0800 CST

从两个不同的列中选择一行[重复]

  • 1
这个问题在这里已经有了答案:
10年前关闭。

可能重复:
如何获得 MAX 行

我需要获取tkhist1表中某些条件的“最新”行。票被绑定到TicketNoand ,我需要为这两列LocationID的值选择一行。DISTINCT

多行可能共享相同的内容TicketNo,LocationID但它们另外由 UniqueID 列定义。我需要为 TicketNo 和 LocationID 的每个组合选择一行,SELECTING即具有单个最高UniqueID值的行。SELECT我的声明中不需要唯一 ID 。

以下查询选择了我需要的一些信息,但它不仅每个UniqueID. 如果一行(或任何其他列)具有不同的值,FreightPay它将被选择为新行。

SELECT DISTINCT
    [TicketNo],
    [LocationID],   
    [FreightPay]
  FROM [Tkhist1]

TicketNo对于每对不同的and ,我需要一行LocationID,只从最高值 ( DESC)中选择信息UniqueID

sql-server query
  • 1 个回答
  • 10111 Views
Martin Hope
Ben Brocka
Asked: 2011-11-18 08:56:35 +0800 CST

聚集索引是否会提高对该聚集索引按顺序执行的更新的性能?

  • 6

我知道索引会降低数据修改性能,但我有一个任务,其中(几乎)所有更新都是按顺序对项目完成的。聚集索引会提高还是降低更新这些行的性能?

聚簇索引将位于一列id所在id的IDENTITY列上。id因此永远不会改变,并且将是连续的(此外,永远不应删除行)。这是我的更新语句的格式:

UPDATE [table] SET value = 1 
WHERE  id IN (1,2,3,4...)

然而,这些值不一定是连续的。IN (1,2,4,5)如果未设置为更新,则也可能有一个序列id=3,但它们将始终按顺序排列。

当所有更新都按顺序进行时,聚簇索引会提高还是降低性能?

sql-server index
  • 1 个回答
  • 672 Views
Martin Hope
Ben Brocka
Asked: 2011-11-05 06:18:52 +0800 CST

为报表输出创建物理表的原因是什么?

  • 2

我注意到,对于我们组织和我们的一些 ERA 软件提供商制作的 Crystal Reports,他们倾向于使用物理表作为他们报告的数据集,而不是使用视图或存储过程来收集数据。偶尔我看到报告使用存储过程,然后使用物理表而不是临时表来存储和操作数据集。在这些情况下,报告输出通常以rpt_ap_vendors类似表格的形式存在,并且在不使用时可能会或可能不会缺少数据。

这些总是按需生成报告的情况,因此这不是报告可以生成一次并提供多次服务的情况,并且不会有多个报告/存储过程同时访问此数据。

像这样的报告使用物理表的原因是什么?这样做有逻辑、技术或性能相关的理由吗?在生成报告时,我个人总是使用带有临时表或更好的派生表的视图和存储过程,以避免涉及清除/删除临时表的额外磁盘读取。

best-practices view
  • 2 个回答
  • 796 Views
Martin Hope
Ben Brocka
Asked: 2011-10-01 10:45:06 +0800 CST

什么是“异构查询”?

  • 15

我收到以下关于我在程序中运行的 SQL 查询的错误消息。SQL Server 2005 T-SQL。

异构查询需要为连接设置ANSI_NULLS和选项。ANSI_WARNINGS这确保了一致的查询语义。启用这些选项,然后重新发出您的查询。(16 级)

修复它很容易,设置ANSI_NULLS和ANSI_WARNINGS ON,但我想知道什么是异构查询。谷歌搜索带来了几十个结果告诉我设置ANSI_NULLS和ANSI_WARNINGS,没有解释这个词的含义。查询是:

UPDATE SRV.DB.DBO.TABLE SET Column=
            (SELECT Column 
            FROM SRV1.DB.DBO.TABLE)

我认为这是由于在一个查询中连接到多个数据库引擎,否则我从未收到此错误。
“异构”是否只是指在这种情况下查询两个不同的数据库引擎?

sql-server errors
  • 3 个回答
  • 18995 Views
Martin Hope
Ben Brocka
Asked: 2011-09-29 13:33:48 +0800 CST

从多个链接的远程数据库中查询数据

  • 2

使用 SQL Server 2005 数据库和 SQL Server Management Studio 2008,我需要定期从 n 个链接数据库中的每个数据库中查询一个值。服务器在物理上是远程的,我基本上可以指望超时,尝试创建完成的查询失败。当服务器超时时,每次尝试都会失败,我特别得到了“登录超时过期”错误。

理想情况下,我需要一个存储过程,它为每个服务器生成一个包含一列或一行的行或表,以及一个指示我在远程数据库中的值的值,或者null如果我得到一个超时(远程数据库上的值不能null)。

我收集数据的第一个想法是

select
(SELECT TOP 1 [value]
FROM 
[RemoteServer1].[DB].[dbo].[Table]) as
RemoteServer1,
(SELECT TOP 1 [value]
FROM 
[RemoteServer2].[DB].[dbo].[Table]) as
RemoteServer2,
...

它会生成一行,其中包含我需要的所有值和可用于报告所需值的索引。但是一个 select 语句中的单个超时会杀死整个查询(如果到达所有服务器,它确实会正确执行)。我可以放心地假设在查询中的某个时间点,至少有一台服务器会超时。

我尝试了一个异常,但它似乎不起作用(我以前从未真正在 SQL Server 中使用异常)。我试过这个代替每个子查询:

begin try
(SELECT TOP 1 [Value]
FROM 
[RemoteServer1].[DB].[dbo].[Table])  as RemoteServer1
end try
begin catch 
select null as RemoteServer1
end catch,

但是超时仍然会导致整个查询失败,我认为这是因为只有在连接没有失败的情况下尝试才有效?

有什么方法可以工作吗?我能想到的唯一其他解决方案是每个远程数据库上的存储过程来发送这个记录,所以它都在我们的本地数据库上(我们可以依赖到达),但这会引入比这个查询更有价值的复杂性。

sql-server linked-server
  • 2 个回答
  • 3576 Views
Martin Hope
Ben Brocka
Asked: 2011-09-23 10:30:23 +0800 CST

设置视图的权限

  • 4

我正在通过 SQL Server Management Studio 2008 在 SQL Server 2005 数据库上创建一个视图,该视图从两个表中读取。该视图是从 Web 应用程序访问的,我希望用户能够通过更新视图来更新其中一个表,而不是另一个。一个表是来自重要系统的实时数据,不应被此应用程序更改。我控制 Web 应用程序,因此它不应该生成将更新该表的查询,但我根本不希望它能够这样做。

有没有办法设置权限,使视图本身只能从基础表之一读取?我所知道的关于权限的一切都在用户级别,但我认为有一种方法可以将视图设为只读。

sql-server view
  • 2 个回答
  • 3005 Views
Martin Hope
Ben Brocka
Asked: 2011-09-21 06:17:09 +0800 CST

表别名是一种不好的做法吗?

  • 26

我记得在为信息服务硕士学生开设的 DBMS 课程中学习如何做到这一点。为了节省一些输入,您可以输入:

SELECT t1.id, t2.stuff 
FROM 
              someTable    t1 
   INNER JOIN otherTable   t2 
      ON t1.id=t2.id
;

但是......为什么这在存储过程等中是可以接受的?似乎它所做的只是损害了语句的可读性,同时节省了极少的时间。这样做是否有任何功能或逻辑原因?它似乎增加而不是消除歧义;我可以看到使用这种格式的唯一可接受的原因是如果您添加了一个语义上有意义的别名——例如FROM someTable idsTable——当表名描述性不够时。

表别名是一种不好的做法,还是只是滥用有用的系统?

stored-procedures best-practices
  • 6 个回答
  • 6281 Views
Martin Hope
Ben Brocka
Asked: 2011-09-17 12:41:08 +0800 CST

SQL Server 2005 中的最近查询

  • 3

我正在使用 PHP Web 应用程序与数据库交互,需要捕获错误查询。它是动态生成的 SQL,我不知道 100% 的代码,也不是我编写的,所以我需要看看它在做什么。

使用 SQL Server Management Studio 2008,我发现很难找到数据库中最后执行的 n 个查询。我搜索了一场风暴,但我见过的所有解决方案都需要“sql_handle”,这是我数据库兼容级别中不可用的功能,并且启动我见过的所有解决方案似乎都没有捕获动态查询,这网络应用程序使用。

我正在使用这个查询:

SELECT TOP 50 * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName,
  execution_count,s2.objectid,
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset / 2+1 ,
      ( (CASE WHEN statement_end_offset = -1
  THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2)
ELSE statement_end_offset END)- statement_start_offset) / 2+1)) AS sql_statement,
       last_execution_time
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 ) x
WHERE sql_statement NOT like 'SELECT TOP 50 * FROM(SELECT %'
ORDER BY last_execution_time DESC

但它要求在 SQL Server 2005 中更改 sp_dbcmptlevel(搜索要求 comptlevel 为 90,我需要它为 80),这是不可接受的,并且在最近的情况下甚至不返回在数据库上运行的任何动态查询;它只返回存储过程的操作。

具有相同的兼容性和不完整结果问题的类似解决方案是:

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC

这个返回一个非常小且非常奇怪的查询子集,包括最近的查询(通常是它本身)和一堆create procedure语句。

SSMS 或系统数据库查询是否有任何功能可以让我查看或捕获最近的查询?如果我必须以某种方式捕获和保存查询字符串,那是可以接受的,因为这仅在测试系统中。

sql-server ssms
  • 2 个回答
  • 1276 Views
Martin Hope
Ben Brocka
Asked: 2011-09-15 11:35:19 +0800 CST

为什么 SSMS 在表格顶部而不是底部插入新行?

  • 14

每当我在 SQL Server Management Studio 2008(数据库是 SQL Server 2005)的表中手动插入一行时,我的新行就会出现在列表的顶部而不是底部。我正在使用身份列,这会导致类似

id  row
42 first row
1 second row
2 third row

获取行且未明确排序时。TOP 1当为 Web 应用程序获取行并更改查询返回的内容时,这会导致不同的外观。

我知道我可以order by,但为什么会这样?我的大部分数据是通过 Web 应用程序插入的,来自该应用程序的所有插入都会导致先进先出的顺序,例如,最新的插入位于底部,因此 id 都在一行中。服务器或 Management Studio 中是否有一些设置导致这种不正确的排序?

sql-server ssms
  • 3 个回答
  • 13021 Views
Martin Hope
Ben Brocka
Asked: 2011-09-10 11:57:24 +0800 CST

是否有理由使用极其缩写的表名?

  • 23

我们正在使用来自供应商应用程序的数据库设置,该应用程序具有非常难以读取的数据库表名,并且没有关于存储内容的文档。我可以理解为什么人们可能想在专有应用程序中混淆他们的表结构,但这个应用程序(企业资源规划)的卖点之一是它的可定制性。

表名类似于 aptrx(应付帐款交易)和 apmaster_all(奇怪的是,这是供应商表)。这是一个极其复杂的数据库,所以我想知道这个约定是否有任何逻辑,或者它是否只是被有意或无意地混淆了。

据我所知,表名的长度不会显着影响性能,对吗?数据库非常复杂(数百个表),所以排序是有意义的,但我无法想象为什么 AccountsPayableTransactions 不如 aptrx ....

naming-convention
  • 8 个回答
  • 11146 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve