我在我的数据库上运行这个选择查询:
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 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) 对于安全审计,我需要识别所有超级用户并记录执行的每个活动。最好的方法是什么?
“超级用户”是指 sysadmin、serveradmin、securityadmin、processadmin 和 dbcreator。
我们已经设置了 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
我有下表:
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。
还有其他方法可以优化查询并以更快的方式获得结果吗?
升级还是新建?有什么建议?有没有人有任何关于这个过程的陷阱或战争故事要分享?
我们在 Prod 中有一个 2012 实例,它同时具有 OLTP 和 OLAP 数据库。我们正在创建两个实例,一个专用于这些任务中的每一个。OLAP 实例是一个新版本,但是为了最大限度地减少最终用户停机时间,我们正在考虑升级将容纳 OLAP 数据库的实例。
我正在寻找超出我在 Microsoft 文档中阅读的内容的一般建议。
有没有人有任何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 2012 的 SQL Server 迁移到新硬件和新版本的 SQL Server (2016)。我试图找到停机时间最短的最佳解决方案。我在互联网上找到了一些理论上听起来很棒的建议。我说的是数据库镜像和滚动升级。但我也读到 MS 不推荐不同 SQL Server 版本之间的数据库镜像。所以现在我很困惑我应该还是不应该为此使用数据库镜像。有什么建议?以前有人试过这种方法吗?我也在考虑日志传送。
sql-server migration mirroring sql-server-2012 sql-server-2016
我创建了一个存储过程,允许用户在 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
我们有一个遗留应用程序。出于某种原因,有人决定为每个客户创建一个数据库。所以我们有 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
sql-server ×10
sql-server-2012 ×10
permissions ×2
aggregate ×1
connections ×1
data-masking ×1
log-shipping ×1
migration ×1
mirroring ×1
optimization ×1