标签: sql-server-2008

如何从 SQL 语句中获取列名?

有没有简单的方法来获取从 SQL 语句返回的列名?

如:

 SELECT * 
 FROM ATable 
 FULL OUTER JOIN BTable b ON a.SOME_KEY = b.SOME_KEY
 FULL OUTER JOIN CTable c ON b.SOME_ID = c.SOME_ID
 FULL OUTER JOIN DTable d ON a.SOME_OTHER_ID = d.SOME_OTHER_ID
 WHERE a.SOME_KEY = @key AND c.SOME_SERIAL_NR = @serialnumber
Run Code Online (Sandbox Code Playgroud)

我似乎无法得到

select column_name 
from information_schema.columns 
where table_name = 'table' 
Run Code Online (Sandbox Code Playgroud)

在我当前的环境中工作

sql-server-2008

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

RIGHT JOIN 没有按预期工作

我有一个关于连接两个表的问题。

架构

CREATE TABLE [dbo].[DCString] (
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [DCDistributionBoxID] [bigint] NOT NULL,
    [CurrentMPP] [decimal](18, 2) NULL,
    CONSTRAINT [PrimaryKey3] PRIMARY KEY CLUSTERED ( [ID] ASC )
)

ALTER TABLE [dbo].[DCString]
    ADD CONSTRAINT [FK_DCString_DCDistributionBox] FOREIGN KEY([DCDistributionBoxID])
    REFERENCES [dbo].[DCDistributionBox] ([ID])

CREATE TABLE [dbo].[StringData](
    [DCStringID] [bigint] NOT NULL,
    [TimeStamp] [datetime] NOT NULL,
    [DCCurrent] [decimal](18, 2) NULL,
    CONSTRAINT [PrimaryKey4] PRIMARY KEY CLUSTERED ( [TimeStamp] DESC, [DCStringID] ASC)
)
Run Code Online (Sandbox Code Playgroud)

[StringData]表具有以下存储统计信息:

  • 数据空间:26,901.86 MB
  • 行数:131,827,749
  • 分区:真实
  • 分区数:62
用法

我现在想将[StringData]表中的数据与表中的数据连接起来[DCString]。 …

sql-server-2008 join sql-server

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

SQL Server:查看名称

我来自 Oracle 背景,遇到了创建 SQL Server 视图的代码,这是我以前从未见过的。

我们有一个名为 viewA 的视图(例如)

在生成视图的脚本中,我看到了这段代码

select columnA, columnB, columnC
from tableA as vw_tableB
Run Code Online (Sandbox Code Playgroud)

我的问题是,视图到底叫什么?

viewA还是vw_tableB

我的另一个问题是这背后的基本原理是什么?

sql-server-2008 sql-server view

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

按父列排序的不同子行

我有一个查询,我想在其中检索不同的Child行,但按Parent. 如果我执行以下操作,则会收到错误消息,因为 中指定的列ORDER BY未包含在DISTINCT列表中:

SELECT
    DISTINCT c.foo, c.bar
    FROM Parent p
    JOIN Child c on c.parentId = p.id
    ORDER BY p.createdDate
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加p.createdDate到选择列表中,我将失去Child行的独特性,因为p.createdDate它们都不同。

如果我使用 CTE 或子查询首先进行排序,然后从中选择不同的行,则外部查询不保证它将保持内部/cte 查询的顺序。

有没有办法实现这一目标?

sql-server-2008 sql-server order-by t-sql distinct

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

仅返回重复数据

我在整个互联网上搜索堆栈溢出,但我找到的每个示例都只有一行,或者根本不起作用。

我有这张桌子:

TBL_RELATORIOS_TAMANHOS

table_catalog
table_name
column_name
data_type
character_maximum_length
numeric_precision
numeric_scale
Run Code Online (Sandbox Code Playgroud)

在它里面我有所有表中的所有列。我只需要找到那些具有不同精度、大小等的列。

使用 row_number 我得到了这个:

;WITH CTE AS
(
SELECT DISTINCT table_name 'Tabela', 
       column_name 'Coluna',
       character_maximum_length as 'Tamanho', 
       numeric_precision as 'Precisao_Numerica', 
       numeric_scale 'Escala_Numerica'
FROM TBL_RELATORIO_TAMANHOS
)
SELECT *,
    ROW_NUMBER() over ( partition by Tabela,Coluna order by Tabela,Coluna)
FROM CTE
ORDER BY 1,2
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以看到上面有一个的列2,所以这个是重复的(相同的列,不同的大小,精度等)。

| table_Name              | Column_name      | character_maximum_length | numeric_precision | numeric_scale | Row_number |
|-------------------------|------------------|--------------------------|-------------------|---------------|------------|
| ACOES                   | ID_BMF           | 20                       | NULL              | NULL          | 1 …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

UPDATE触发器导致死锁

我有一个 After Update 触发器,其中触发器在同一个表中插入一个值以查找持续时间列。我的目标是每当插入 end_time 值时,触发器将找到hh:mm:ss格式的持续时间并插入到持续时间列中。

问题-触发器导致如此多的死锁,从而阻塞了另一个进程。

列数据类型信息..

Start_time datetime, End_time datetime, Duration time(3)

ALTER TRIGGER [dbo].[GET_DURATION] ON [dbo].[INBOUND_CALL_xxx]
AFTER UPDATE AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Begin Transaction

               UPDATE INBOUND_CALL_xxx
               SET DURATION = convert(time(0),(END_TIME- START_TIME))                                                     
               FROM INBOUND_CALL_xxx with (nolock)
Commit;
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server sql-server-2012 performance-tuning

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

为什么 msdb.dbo.backupset 每隔 15 分钟就会有每个数据库的条目?

我在 SQL Server 上有 134 个独立的数据库。

每 15 分钟msdb.dbo.backupset,服务器上的每个数据库的表中都会出现一个条目。

  • 为什么这种情况每 15 分钟发生一次?
  • 是什么导致这种情况发生?
  • 如何阻止这些条目发生?
  • 有没有其他人在您的 MSDB 数据库上看到此类活动?

sql-server-2008 sql-server backup msdb

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

如何在不覆盖所有表的情况下恢复备份?

我有一个包含 3 个表的 SQL Server 数据库。我需要恢复包含4 个表的备份,同时仍保留原始 3 个表中的旧数据。这可能吗?

sql-server-2008 sql-server restore

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

SQL PRINT 与 SQL EXEC

执行下面的查询时,如果我使用PRINT它打印正确。我可以复制并粘贴打印的代码并执行它。但是,如果我使用 EXEC,则会出现以下错误:

执行时出错

有没有办法简化我正在做的事情?为什么 SQLPRINT和 SQL 会EXEC提供这两种截然不同的结果集?

DECLARE @TableName as NVARCHAR(250), @SQL as VARCHAR(MAX);

DECLARE @TableCursor as CURSOR;
SET @TableCursor = CURSOR FOR
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
AND name like 'HISTORY_MasterList_%'
ORDER BY sobjects.name

OPEN @TableCursor;
FETCH NEXT FROM @TableCursor INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL ='select '''+ @TableName +''', 0
 Union All
select All ''Server Count'',count(1) from ['+ @TableName +'] 
 Union All
select All ''Server Cores'',sum(convert(decimal(18,0),cores)) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server t-sql sql-server-2008-r2 sql-server-2012

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

无法在探查器中跟踪“将数字转换为数字数据类型的算术溢出错误”错误

我有一个 .net 应用程序。它试图创建表、视图并将数据插入/更新到许多表中。应用程序运行时出现错误。

我尝试在 SQL Profiler 中跟踪查询,但没有发现任何错误。有什么方法可以跟踪错误语句,或者我需要在探查器中添加任何其他事件。

我已经尝试过以下事件(例外):

  • RPC:已完成
  • RPC:开始
  • SP:开始
  • SP:已完成
  • SP:开始
  • SP:StmtCompleted
  • SQL:批量启动
  • SQL:批量完成

sql-server-2008 sql-server profiler

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