标签: sql-server-2008

从单个结果集中的多个数据库中选择同名表中的行

出于某种原因,我在n 个数据库(相同名称和模式结构)而不是单个数据库中有一个表Table_1。列是这样的:

| 专栏_1 | 专栏_2 |

我可以通过对每个数据库运行此查询来从这n 个数据库中选择数据:

use Database_n
select * from Table_1
Run Code Online (Sandbox Code Playgroud)

问题:这将要求我运行此查询n 次。这将返回n 个结果集,如下图所示:

n 个结果集

问题:有没有办法在一个结果集中从所有这些数据库中获取数据,如下所示:

一个结果集

sql-server-2008 sql-server sql-server-2008-r2 table

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

如何将 RELATIONAL 数据分解为 HIERARCHY 数据结构?

我有一个返回以下数据集的查询:

RELATIONid MAPid  D1id   D2id  D3id
4999       4999   626    1250    7 
5000       5000   626    1250    8
Run Code Online (Sandbox Code Playgroud)

对于下一步,我需要将这些数据集绑定到树视图(层次结构)中。我需要将此数据集转换为以下内容:

Nodeid   ParentNodeid  Header
626       null           D1
1250      626            D2
7         1250           D3
8         1250           D3 
Run Code Online (Sandbox Code Playgroud)

我如何从原始数据集中实现这些结构?


我还有一个问题要问,数据结构比前一个复杂(一点点)。假设我有这样的示例数据集:

RELATIONid MAPid  D1id   D2id  D3id
4999       4999   626    1250    7 
5000       5000   626    1250    8
5001       5001   627    1300    10 
5002       5002   627    1300    12 
5003       5003   628    1400    15 
Run Code Online (Sandbox Code Playgroud)

从以下数据集中,我们有 3 个 MainParent:626, 627, 628并且转换(交叉应用)输出期望将是这样的:

Nodeid   ParentNodeid  Header
626       null           D1
1250      626 …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server hierarchy

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

无法消除索引扫描

我有一个查询,即使使用SQL Sentry,也无法消除索引扫描。

这是查询:

SELECT TOP 30 codCliente FROM (
        SELECT t1.CodCliente, codcampo, valor, t1.chavealeat 
        FROM tblCliente AS t1 WITH(NOLOCK) 
            INNER JOIN tblClienteDetalhe AS t2 WITH(NOLOCK) 
            ON t1.codcliente = t2.codcliente 
            AND CodCampo IN(-1, 4)
        WHERE codStatus IN (0)  
            AND t1.ChavePeriodo < GETDATE()
            AND t1.CodStatusLigacao = 0
            AND EXISTS
            (
                SELECT codcliente FROM tblclientedetalhe WITH(NOLOCK) 
                WHERE codcampo = 3 AND valor = '2' 
                    AND codcliente = t1.codcliente
            )
            AND EXISTS
            (
                SELECT codcliente FROM tblclientedetalhe WITH(NOLOCK) 
                WHERE codcampo = 6
                    AND CONVERT(DATETIME, …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server clustered-index query-performance

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

为什么在此语句中使用 Convert,它与 CAST 有何不同?

这是 MSDN 页面上 OVER 子句的一段代码:

USE AdventureWorks2012;
GO
SELECT BusinessEntityID, TerritoryID      
,DATEPART(yy,ModifiedDate) AS SalesYear
,CONVERT(varchar(20),SalesYTD,1) AS  SalesYTD
,CONVERT(varchar(20),AVG(SalesYTD) OVER (PARTITION BY TerritoryID 
                                        ORDER BY DATEPART(yy,ModifiedDate) 
                                       ),1) AS MovingAvg
,CONVERT(varchar(20),SUM(SalesYTD) OVER (PARTITION BY TerritoryID 
                                        ORDER BY DATEPART(yy,ModifiedDate) 
                                        ),1) AS CumulativeTotal
FROM Sales.SalesPerson
WHERE TerritoryID IS NULL OR TerritoryID < 5
ORDER BY TerritoryID,SalesYear;
Run Code Online (Sandbox Code Playgroud)

所以我在理解为什么必须在那里使用 CONVERT 函数时遇到问题。我认为这与转换函数的表达式部分中的字段之一的返回类型有关?可以用 CAST 代替吗?我的第二个问题是,这部分究竟是如何工作的?

SUM(SalesYTD) OVER (PARTITION BY TerritoryID
ORDER BY DATEPART(yy,ModifiedDate)
Run Code Online (Sandbox Code Playgroud)

这到底是什么意思?是每年计算总和吗?是这样吗?

sql-server-2008 sql-server

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

如何在 SQL Server 2008 中使用 mdf 和 ldf 文件还原数据库?

征求专家意见。发生了一件非常不幸的事情。几天前,我们的一台 PC 崩溃了。那台电脑安装了 SQL Server 2008。不幸的是,该服务器上没有运行备份。我们将磁盘发送到数据恢复位置,看起来他们可以恢复某些.mdf.ldf文件。

我们对 1 个特定数据库特别感兴趣。

我的问题是:

  1. 是否可以使用相应的 mdf 和 ldf 文件还原特定数据库?
  2. 我们需要从系统数据库中获得任何 mdfs 吗?我们需要要求数据恢复公司寻找任何其他文件吗?
  3. 将该数据库恢复到新机器的步骤和/或最佳实践。

提前感谢您的帮助。

sql-server-2008

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

在 SQL Server 中格式化电话号码

我正在使用 SQL Server 2008,我发现此解决方案仅适用于 SQL Server 2012 - 在 SQL Server 2008 中格式化电话号码的等效方法是什么?

FORMAT([PhoneField],'###-###-####')
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server t-sql

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

使用 Echo 语句在文本文件中写入 Echo is ON

以下代码用于在文本文件中写入数字,而是将“Echo is ON”写入文本文件。

SET @CMD = 'ECHO '+@Ver+'>'+@Vercheck      
  Print @CMD

EXEC xp_cmdshell @CMD  
  ,NO_OUTPUT 
Run Code Online (Sandbox Code Playgroud)

打印@CMD 给出“ECHO 1>C:\Pharmsuite\Vercheck.txt”

这里查询写的是“Echo is ON”而不是 1。

sql-server-2008 sql-server t-sql xp-cmdshell

1
推荐指数
3
解决办法
6782
查看次数

如何从 table1 上的触发器将值插入 table2

我有 2 个带有列名的表WHO,我正在使用这 2 个表创建一个视图,其中FSwho.who = FStasks.who.

如果我在FStaskswhere 中输入一条新记录FStasks.who = LIZ,但我的FSwho.who表上没有记录,那么触发器应该插入LIZ到我的表中。

使用下面的代码,我得到的错误是

无法绑定多部分标识符“fs_tasks.WHO”。(我也试过inserted.who

我搜索了互联网,我遇到的大多数解决方案都是关于更改同一张桌子上的值。如何将值插入到完全不同的表中?

ALTER TRIGGER [dbo].[FS_TASKS_TRIG]
   ON  [dbo].[FS_TASKS]
   AFTER INSERT,UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

DECLARE @Action as char(1);
    SET @Action = (CASE 
        WHEN EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) THEN 'U'  -- Set Action to Updated.
        WHEN EXISTS(SELECT * FROM INSERTED) THEN 'I'  -- Set Action to Insert.
        WHEN EXISTS(SELECT * …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

我可以为此值“19920000”转换日期格式吗?

我有一个价值19920000。这是日期格式yyyyMMdd。我想按表中的日期字段保存。您可能会看到它是无效数据,因为日和月值为零。我可以在 SQL Server 中将日期格式转换为这个值吗?可不可以?

如何仅在日期字段中保存年份?

我从excel表中获取数据。这些数据是客户的出生日期。有些人想隐藏出生日期的日期和月份。他们没有给出正确的日期格式。我的应用程序是从 excel 表中读取数据并显示在 datagridview 表上,然后保存到数据库。数据量大,至少一次读取约30000条以上记录。我无法为此数据字段分隔列,因为性能可能会下降。

我正在使用 SQL Server 2008。

.

sql-server-2008 sql-server date

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

页面预期寿命在某些时候非常低?

每天我们都会在特定时间段 (03:00 AM - 04:00 AM) 收到一条警报,表明页面预期寿命太低:

SCOM:警报:SQL DB 2008 引擎页面预期寿命太低

我们已查看在此期间是否正在运行任何内存密集型操作,但未发现任何内容。

我们假设原因是通过 Windows 服务运行的查询导致缓冲区缓存中的页面寿命达到非常低的值(8 - 22 秒)

解决此问题的好方法是什么?

感谢奥萨马·瓦利

sql-server-2008 memory page-life-expectancy buffer-pool

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