我需要以编程方式删除一个包含所有快照的数据库,然后重新创建该数据库并创建一个新快照。我无法从查询中找到快照文件所在的位置。
本质上,我们有几个环境,它们在放置这些文件的位置上不一致,所以我需要我的代码足够聪明,以便将这些文件放回原来的位置。
澄清一下:当我说快照文件时,我指的是 .ss 文件。
我是一名初级开发人员。我被要求创建一个子查询来解决这个问题。如果问题不清楚,请告诉我,以便我提供更多详细信息。
我有两张桌子,Article和Author。我的任务是执行以下操作:
选择 Author 表中不存在的不同 Author 值。结果不应包含任何为 NULL 或空字符串的作者。目的是查找在文章表中但不在作者表中的任何作者姓名。
我在两个表中都有作者列。这个问题可以通过连接这两个表来解决吗?
我试过了
select distinct name
from author
where name NOT IN ( select author
from article
where author IS NOT NULL)
Run Code Online (Sandbox Code Playgroud)
它没有给我想要的结果:(
我是 SQL Server 世界的新手。在下面的示例中,我有两家公司:
每个公司只有一个条目具有列的值power1, power2, power3。
我需要更新表,以便每个公司的所有列都有一个值。换句话说,我需要更新所有空白(空)值。
使用虚构数据的示例:
Create Table #Rentarious
(
c1 varchar(200)
,yryryryr datetime
,power1 varchar(200)
,power2 varchar(200)
,power3 varchar(200)
)
Insert Into #Rentarious VALUES
('Building Blocks','2016','Red','Blue','Green')
,('Red Cement', '2012', 'Pink','Purple','Orange')
Insert Into #Rentarious(c1, yryryryr) VALUES
('Building Blocks', '2012')
,('Building Blocks', '2013')
,('Building Blocks', '2014')
,('Red Cement', '2016')
,('Red Cement', '2011')
Run Code Online (Sandbox Code Playgroud)
编写更新语句以将列的空值更新为表power1, power2, power3中已列出的值的语法是什么?
我有一个数据库表,users具有不同的用户名大小写(参见示例)。如何将字母更新ACCOUNTS\为小写?
ACCOUNTS\James.McAvoy
ACCOUNTS\michael.fassbender
ACCOUNTS\nicholas.hoult
ACCOUNTS\Oscar.Isaac
Run Code Online (Sandbox Code Playgroud)
更新后的期望结果:
ACCOUNTS\james.mcavoy
ACCOUNTS\michael.fassbender
ACCOUNTS\nicholas.hoult
ACCOUNTS\oscar.isaac
Run Code Online (Sandbox Code Playgroud) 我知道 CLR 存储过程在过程代码中更有效,而 T-SQL 更适合查询 - 但是我很难决定使用什么来满足我的特定需求,我想知道是否还有其他事情我在做决定时应该考虑一下。
我计划创建的代码涉及查询一组数据、实现一些算法(随着时间的推移会变得更加复杂)以及将数据插入到数据库中。此存储过程将由调度程序部署 - 最有可能是 azure webJobs,因为据我所知 Azure SQL 不支持 db 作业。
为什么我想到使用 C#
假设我可以从我的服务器加载 DAL 库,并利用 OOP - 我想我可以为这个问题实现一个对编码器更友好的解决方案 - 至于性能,我认为它会更好或至少在比较中不明显。
为什么我想到使用 T-SQL
我实际上并不认为这是一个更好的解决方案,但可能有一些我忽略的东西可能是 T-SQL 的一个很好的例子,因为对我来说它没有任何意义。
最重要的是
有没有办法可以创建一个 T-SQL 存储过程,调用一个带有复杂对象作为参数的 C# 存储过程 - 执行我的算法并返回要插入的数据,然后从 T-SQL 插入它?似乎是最优雅、性能最好的 (?) 解决方案(假设它是可能的,并且从 T-SQL 调用 CLR 没有任何缺点)。
我正在尝试以 0-100 的比例找出查询的每个给定记录的位置。我这样使用PERCENT_RANK排名功能:
select Term, Frequency, percent_rank() over (order by Frequency desc) * 100
from Words
Run Code Online (Sandbox Code Playgroud)
但是当我查看结果时,我看到的不是从 0 开始到 100 的列,而是从 0 开始到 37.xxxx 的列。
虽然BOL没有明确提到结果分布在 0-100 的范围内,但我对这个词的理解percent让我使用了这个排名函数。
我在这里想念什么?
我正在配置一个作业以获取违规进程的SPID并将其终止。我正在使用来自@AdamMachanic的伟大sp_Whoiscative和在登录名和 SPID 和session_id值上加入sysprocesses之间的混合,因为这些值应该是相同的(或者我错了,那是我的错误?)。
我得到了一些我不明白的东西:对于来自 sysprocesses的相同SPID,我从 whoisactive 结果中得到不同的 session_id值。这里有什么不正确?
这是我正在使用的代码。在当前日期时间之前 10 秒获取值的过滤器是因为 whoisactive 正在使用参数 @deltainterval 运行,每次运行需要大约 10 秒来执行。
USE master;
-- Log information about current running processes to table Log_WhoIsActive
EXEC [master].[dbo].[sp_WhoIsActive]
@get_full_inner_text = 1,
@get_plans = 2,
@get_outer_command = 1,
@get_transaction_info = 1,
@get_task_info = 2,
@get_locks = 1,
@get_avg_time = 1,
@get_additional_info = 1,
@delta_interval = 2,
@sort_order = '[start_time] DESC',
@destination_table = 'Log_WhoIsActive_tests';
--compare date from …Run Code Online (Sandbox Code Playgroud) 我使用下面的 T-SQL 查询来确定上次完整数据库备份的日期,并返回备份文件的大小和位置。我的问题是,对于没有备份或没有备份历史记录的数据库,它根本不会返回任何数据。理想情况下,我想修改查询以便返回所有数据库,无论它们是否有任何备份历史记录。任何人都可以建议如何修改以下查询以适应此情况?
WITH LastBackUp AS
(
SELECT bs.database_name,
bs.backup_size,
bs.backup_start_date,
bmf.physical_device_name,
Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC )
FROM msdb.dbo.backupmediafamily bmf
JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id
JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id
WHERE bs.[type] = 'D'
AND bs.is_copy_only = 0
)
SELECT
database_name AS [Database],
CAST(backup_size / 1048576 AS DECIMAL(10, 2) ) AS [BackupSizeMB],
backup_start_date AS [Last Full DB Backup Date],
physical_device_name AS [Backup File Location]
FROM LastBackUp
WHERE Position = …Run Code Online (Sandbox Code Playgroud) 我有一个日期维度表,我需要在其中添加一个新列,在该列中定义一个月内一周中某天的迭代(第二个周一/周二/周三/周四/周五/周六/周日等为 2) .
是否可以仅在表格的日期列(“日期”类型)上进行计算?
我以为你只需要用 a 分隔两个文件名,;但我的语法失败并出现错误
Msg 102, Level 15, State 1, Line 251
Incorrect syntax near '@filename2'.
Run Code Online (Sandbox Code Playgroud)
这是我的完整语法,我需要做什么才能将两个文件附加到我的电子邮件中?
Declare @filename1 varchar(max), @filename2 varchar(max)
Set @filename1 = 'C:\Testfiles\Test1.csv'
Set @filename2 = 'C:\Testfiles\Test2.csv'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Mod',
@from_address = 'modis@modisglobal.com',
@recipients= 'rsmith@gmail.com',
@subject= 'Test Email',
@body = @body1,
@file_attachments = @filename1;@filename2;
Run Code Online (Sandbox Code Playgroud)