对于 SQL Server 2008 R2 对以下内容提出单个查询似乎具有挑战性:给定列 a 和 b 的示例:
a | b
-------------
0 | 2000
1 | 2001
1 | 2002
1 | 2003
2 | 2004
3 | 2005
1 | 2006
1 | 2007
4 | 2008
1 | 2009
Run Code Online (Sandbox Code Playgroud)
目标:标记具有重复列 a 的行,并在考虑到其他值的情况下为它们指定唯一编号。结果应在 c 列中。注意这里最困难的部分是用 2 & 5 & 7 填充列 c。
a | b | c
-------------
0 | 2000 | 1
1 | 2001 | 2
1 | 2002 | 2
1 | …Run Code Online (Sandbox Code Playgroud) WHILE (@7DaysEarlierPartitionIntegerId <= @CurrentPartitionIntegerId)
BEGIN
Set @7DaysEarlierPartitionId
= CAST(@7DaysEarlierPartitionIntegerId AS char)
set @sqlCommand
= 'Select * from '
+ quotename(@RequestUsage_Partition + @7DaysEarlierPartitionId)
+ 'where UserLogin like''r2\rohit.kharade'
exec(@sqlCommand)
set @7DaysEarlierPartitionIntegerId
= @7DaysEarlierPartitionIntegerId + 1
END
Run Code Online (Sandbox Code Playgroud)
我收到错误:
字符串 'r2\rohit.kh' 后的非封闭引号。
如何执行 exec 命令 UserLogin =%r2\rohit.kharade%
我在一个表中需要 1100 列。我在同一个表中已经有 928 列,现在我需要添加新的 150 列。
我知道 SQL Server 最多允许 1024 列。
现在我不会创建新表。如果我创建新表并加入我的 require 表,我需要在很多地方进行更改,这对我来说是不可能的。所以我想在同一个表中添加所有列(需要表)。我知道这很难执行这个表,但目前我需要满足这个要求。
我有一个数据库: DB 1
在另一个数据库中DB 2,我想创建一堆引用DB 1. 这些视图会相对复杂,有很多连接、聚合、子查询等。
我不希望 的用户DB 2能够修改DB 1. 即我不希望用户能够在视图上执行插入、更新、删除查询。
这篇博文:http : //sqlhint.com/sqlserver/views/creating-readonly-views
建议我可以使用INSTEAD子句。除了特定用户之外,我更愿意仅禁止视图本身的某些查询子句。这可能吗?
我用谷歌搜索过,但找不到任何有关它的信息。我想知道为什么 SQL Server 默认使用 .bak 扩展名。
我知道有很多不同的软件使用 .bak 扩展名,不仅仅是 SQL Server。
另一个问题,是否还有其他文件格式可用于备份文件?
我正在尝试获取整个 SQL 服务器中未使用过程的列表。我已经完成了获取所有过程的列表,现在我正在使用以下脚本来确定使用了哪些过程。
DECLARE @command varchar(1000)
SELECT @command =
'USE [?] SELECT
qt.text AS "SP Name",
qs.execution_count AS "Execution Count",
qs.max_logical_reads,
qs.max_logical_writes,
qs.creation_time,
DB_NAME() as DatabaseName,
DATEDIFF(Minute, qs.creation_time, GetDate()) AS "Age in Cache"
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY qt.text DESC'
EXEC sp_MSforeachdb @command
Run Code Online (Sandbox Code Playgroud)
我知道这只会显示重启后使用过的程序。数据似乎有些作用 - 然而;我遇到的问题是它似乎显示了整个程序文本 IE:
CREATE PROCEDURE dbo.proc_MSS_PropagationGetQueryServers AS
DECLARE @Temp table(ServerID int, SearchServerName nvarchar(31), IndexDirectory nvarchar(260),
MachineStatus int, LastPropagationTime datetime,
PropagationStatus int ) INSERT INTO @Temp
SELECT SearchServerDirectory,
LastPropagationTime Index,LastPropagationMachineName 1 …
我使用的是 SQL Server 2005。我的一个备份驱动器已满,所以我想移动 2 天之前的备份。
我正在考虑创建一个每天运行的作业,但卡在了移动.bak文件的脚本上。
您知道从驱动器 A 移动文件并将其移动到共享位置的脚本吗?我的.bak文件没有时间戳。
我的生产服务器的数据库意外增长,我几乎要创建一个作业来缩小每月运行一次的数据库。这是个好主意吗?
备份失败并且记录了大量事务的失败时间,这使数据库迅速增长。
我正在使用 SQL Server 2008 R2。
我正在编写一个脚本,该脚本将创建一个新文件夹并将所有数据库备份到该文件夹中。该脚本将生成新文件夹,但不会将备份保存到该文件夹中。我不确定我错过了什么。先感谢您。
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @DirTree TABLE (subdirectory nvarchar(255), depth INT)
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
SET @path = '\\noc2-storage\IT_Backup\Weekly_SQL\CDADB1\' + @fileDate;
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS …Run Code Online (Sandbox Code Playgroud) 我有以下表格设计。
一个Event表,带有用于保存事件元数据的辅助表。
每个事件行具有事件类型柱(regular_event,recurring_route,timed_messages等。)
每个事件类型都有自己的表来定义有关事件的不同内容 - 包括用户。问题是它可能被多对多表 ( users_regular_events) 或第三个表或第四个表( )直接引用events -> recurring_routes -> recurring_routes_stations -> recurring_stations -> recurring_stations_users -> users。
创建一个users_events表来复制某些事件之间的关系是否有意义?因为,目前如果我想向每个用户展示他的事件,我将不得不加入多个表。也许我需要重新考虑我的整个设计?