标签: sql-server-2012

在价格列下方添加总和,而不是在其自己的列中

我在我的数据库上运行这个选择查询:

Select Item.ItemId, Item.ItemDescription, Bid.BidPrice, bid.BidDate,
Sum(bid.bidPrice) over () as TotalBids
from Bid
inner join Item on bid.ItemId=Item.ItemId
where BidDate between '2016-08-24' and '2017-11-15'
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

ItemId  ItemDescription BidPrice    BidDate     TotalBids
1       Frame           35         2016-08-24   3624
4       Wooden chair    40         2016-10-25   3624
2       Car             3000       2017-10-26   3624
3       Stand Fan       29         2017-10-30   3624
5       Black Sofa      400        2017-11-11   3624
6       Cabinet         120        2017-11-15   3624
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否有可能Total Bids在每行的列中得到一个总数,而不是在列的底部得到一个总数BidPrice

sql-server aggregate sql-server-2012

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

统计查询结果中出现的次数

我在我的 sql server 2012 数据库上运行以下查询。

select Appointment.AppointmentDate, Appointment.AppointmentTime,   Auctioneer.AuctioneerName, Auctioneer.AuctioneerSurname, Buyer.BuyerName,   Buyer.BuyerSurname  
from Appointment  
inner join Auctioneer on Appointment.AuctioneerId=Auctioneer.AuctioneerId  
inner join Buyer on Appointment.BuyerId=Buyer.BuyerId  
where AppointmentDate between '2017-01-01' and '2017-12-31' 
Run Code Online (Sandbox Code Playgroud)

结果如下:

+-----------------+-----------------+----------------+-------------------+-----------+----------------+
| AppointmentDate | AppointmentTime | AuctioneerName | AuctioneerSurname | BuyerName | BuyerSurname   |
+-----------------+-----------------+----------------+-------------------+-----------+----------------+
| 2017-10-23      | 13:00:00        | Mary           | Borg              | David     | Borg           |
| 2017-10-24      | 15:30:00        | Mary           | Borg              | Joseph    | Sammut         |
| 2017-11-03      | 09:30:00        | Joseph         | Smith …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

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

如何识别 SQL Server 中的所有超级用户?

对于安全审计,我需要识别所有超级用户并记录执行的每个活动。最好的方法是什么?

“超级用户”是指 sysadmin、serveradmin、securityadmin、processadmin 和 dbcreator。

sql-server permissions sql-server-2012

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

日志传送主数据库日志备份作业失败/卡住

我们已经设置了 LS 来从独立的 SQL Server 2012 切换到集群的 2012 服务器。

我们设置 LS 的主数据库也参与了数据库镜像,大小约为 1.8 TB。这是 PERF env,用于测试实际切换,并且在设置 LS 的数据库上事务不频繁。

问题:我看到主服务器上的 LS 备份作业运行时间比计划时间长 [每 15 分钟] 或失败并出现以下错误:

未处理的异常:System.IO.FileLoadException:进程无法访问该文件,因为它正被另一个进程使用。(来自 HRESULT 的异常:0x80070020)在


失败时没有固定的模式。通常它会在 18-20 秒内完成,但在某些运行中它会在运行超过 50 分钟左右时失败。

我怎样才能进一步解决这个问题?

编辑:@ 日志备份通常每 15 分钟从 100-200 MB

sql-server sql-server-2012 log-shipping

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

LIKE 查询优化

我有下表:

create table Order_Details
(
 ID int not null primary key
,Order_ID int
,Order_Description nvarchar(40)
)
Run Code Online (Sandbox Code Playgroud)

我们在上表中插入了 27,500,000 行,当我在查询下面运行时,它需要 6-7 秒。

select ID,Order_ID, Order_Description 
from Order_Details
where Order_Description  like '%Football Size%'
Run Code Online (Sandbox Code Playgroud)

我在Order_Description包含ID和应用了非聚集索引Order_ID

还有其他方法可以优化查询并以更快的方式获得结果吗?

sql-server optimization sql-server-2012

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

从 SQL Server 2012 升级到 SQL Server 2017

升级还是新建?有什么建议?有没有人有任何关于这个过程的陷阱或战争故事要分享?

我们在 Prod 中有一个 2012 实例,它同时具有 OLTP 和 OLAP 数据库。我们正在创建两个实例,一个专用于这些任务中的每一个。OLAP 实例是一个新版本,但是为了最大限度地减少最终用户停机时间,我们正在考虑升级将容纳 OLAP 数据库的实例。

我正在寻找超出我在 Microsoft 文档中阅读的内容的一般建议。

sql-server sql-server-2012 sql-server-2017

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

创建随机词来混淆 SQL 列

有没有人有任何SQL代码来自动生成单词(全字母,没有数字)。

是否有任何内联 SQL 可以在列上执行此操作?

我们试图混淆表中的名字/姓氏和其他单词列。

此答案目前不适用于列,因为它在列内生成相同的结果。

select top (@stringlength) char(abs(checksum(newid())) % 26 + ascii('A'))
from sys.all_objects
for xml path('')
Run Code Online (Sandbox Code Playgroud)

我试过了,但功能很慢,内联查询可以更快,请随时改进或重写下面

CREATE VIEW [dbo].[RandomValueVw]
AS
SELECT RAND() as random_value


CREATE function dbo.RandomWordGenerate(@length int)
returns varchar(50)
as begin

    DECLARE 
        @text nvarchar(255),
        @i int

    SET @i = 0
    SET @text = ''

    WHILE (@i < @length)
    BEGIN
        SET @text = @text + CHAR((select * from [dbo].[RandomValueVw]) * 26 + 65)
        SET @i = @i + 1
    END

    return @text

end
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 data-masking

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

使用数据库镜像的 SQL Server 迁移(滚动升级)

我计划将 SQL Server 2012 的 SQL Server 迁移到新硬件和新版本的 SQL Server (2016)。我试图找到停机时间最短的最佳解决方案。我在互联网上找到了一些理论上听起来很棒的建议。我说的是数据库镜像和滚动升级。但我也读到 MS 不推荐不同 SQL Server 版本之间的数据库镜像。所以现在我很困惑我应该还是不应该为此使用数据库镜像。有什么建议?以前有人试过这种方法吗?我也在考虑日志传送。

sql-server migration mirroring sql-server-2012 sql-server-2016

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

存储过程作为所有者执行关闭数据库连接不起作用

我创建了一个存储过程,允许用户在 QA 环境中关闭所有数据库连接。我是 SA 并创建了程序。

当我修改 SP 时,在没有“以所有者身份执行”的情况下运行它,我得到了结果。当我添加“以所有者身份执行”时,我没有收到任何结果。

试图理解为什么。

create procedure [dbo].[DatabaseConnectionClose]
    @DatabaseName varchar(255)
with execute as owner
as


DECLARE @kill varchar(8000) = '';  
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'  
FROM sys.dm_exec_sessions
WHERE database_id  = db_id(@DatabaseName)

select @kill as CloseConnectionScript

EXEC(@kill);
Run Code Online (Sandbox Code Playgroud)

sql-server permissions sql-server-2012 connections impersonation

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

SQL 如何将单租户数据库转换为多租户数据库

我们有一个遗留应用程序。出于某种原因,有人决定为每个客户创建一个数据库。所以我们有 500 多个具有相同架构的数据库。

我想转换成一个多客户端数据库。原始客户数据库没有 CustomerId。新的单一数据库确实如此。

我们正在考虑用视图替换旧的数据库,因此旧的应用程序插入/更新仍然可以工作。

老客户数据库:

CREATE TABLE [CustomerOne].[dbo].[CustomerTransaction]
(
    [CustomerTransactionid] [int] identity(1,1) primary key NOT NULL,
    [QuantityBought] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)

新报告数据库具有 CustomerId:

CREATE TABLE ReportingDB.[dbo].[CustomerTransaction]
(
    [CustomerTransactionid] [int] identity(1,1) primary key NOT NULL,
    [Customerid] [int] NOT NULL,
    [QuantityBought] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)

用视图替换旧数据库

create view [CustomerOne].[dbo].[CustomerTransaction]
as
select 
    [CustomerTransactionid]
    ,1 as [CustomerId]
    ,[quantitybought]
from ReportingDB.[dbo].[CustomerTransaction]
where Customerid = 1
with check option
Run Code Online (Sandbox Code Playgroud)

这失败:

-- Attempt inserting into View
insert into CustomerOne.dbo.Customertransaction 
(Quantitybought)
values (4)

Msg 515, Level 16, State …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 database-design sql-server sql-server-2012 sql-server-2016

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