是否有一些标准的方法来为SQL Server命名索引?似乎主键索引名为PK_,非聚簇索引通常以IX_开头.除了唯一索引之外,是否还有任何命名约定?
在PowerShell中初始化数组的最佳方法是什么?
例如,代码
$array = @()
for($i=0; $i -lt 5;$i++)
{
$array[$i] = $FALSE
}
Run Code Online (Sandbox Code Playgroud)
生成错误
Array assignment failed because index '0' was out of range.
At H:\Software\PowerShell\TestArray.ps1:4 char:10
+ $array[$ <<<< i] = $FALSE
Run Code Online (Sandbox Code Playgroud) 有没有人有方法来理解复杂的SQL语句?在阅读结构/ OO代码时,通常有一些抽象层可以帮助您将其分解为可管理的块.但是,通常在SQL中,您似乎必须同时跟踪查询的多个部分中发生的情况.
此问题的推动力是此问题中讨论的关于复杂连接的SQL查询.在盯着答案查询几分钟后,我终于决定使用特定记录逐步查询查看发生了什么.这是我能想到的唯一方法来逐一理解查询.
有没有更好的方法将SQL查询分解为可管理的部分?
我想使用PowerShell自动化FTP下载数据库备份文件.文件名包含日期,因此我不能每天运行相同的FTP脚本.是否有一种干净的方法来构建PowerShell或使用.Net框架?
更新我忘了提到这是一个通过安全的FTP会话.
我在SQL Server Reporting Services(SSRS)中有一个报告,我想安排自动作为电子邮件运行.我希望将报告附加为Excel文件.
根据微软的概述,这应该是可能的.
报告发送.SQL Server Reporting Services支持按需(拉)和基于事件(推送)的报告传递.用户可以使用基于Web的格式或电子邮件查看报告.
但是,我无法找到有关如何实际执行此操作的任何信息.有谁知道应该使用什么工具或哪里有一个好的教程?
谢谢!
我正在SQL Server中编写一个SQL查询,我需要用一个字符串值替换多个字符串值.例如
Product Quantity
------- --------
Apple 2
Orange 3
Banana 1
Vegetable 7
Dairy 6
Run Code Online (Sandbox Code Playgroud)
会成为
Product Quantity
------- --------
Fruit 2
Fruit 3
Fruit 1
Vegetable 7
Dairy 6
Run Code Online (Sandbox Code Playgroud)
我知道如何执行此操作的唯一方法是在SELECT子句中使用嵌套的REPLACE.
SELECT
REPLACE('Banana', REPLACE('Orange', REPLACE('Banana', Product, 'Fruit'),
'Fruit'), 'Fruit') AS Product
FROM
Table
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法?
编辑:产品类别中可能还有其他值.见上面编辑的例子.
我正在运行一个删除数据库然后恢复数据库的T-SQL脚本.该脚本针对SQL Server 2008数据库运行.有时备份文件存在问题,数据库卡在恢复状态.
IF EXISTS (SELECT 1 FROM master.dbo.sysdatabases WHERE name = 'dbname')
BEGIN
ALTER DATABASE [dbname]
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
END
IF EXISTS (SELECT 1 FROM master.dbo.sysdatabases WHERE name = 'dbname')
BEGIN
DROP DATABASE [dbname]
END
RESTORE DATABASE [dbname]
FROM DISK = N'C:\dbname.bak'
WITH FILE = 1,
NOUNLOAD,
STATS = 10
Run Code Online (Sandbox Code Playgroud)
脚本下次运行时脚本会生成错误消息
ALTER DATABASE is not permitted while a database is in the Restoring state.
Run Code Online (Sandbox Code Playgroud)
在尝试运行ALTER DATABASE命令之前,检查数据库是否处于恢复状态的最佳方法是什么?
编辑:我正在运行的RESTORE DATABASE命令不使用NO RECOVERY选项.
我正在创建一个SQL查询,它将根据两个聚合函数的值从表中提取记录.这些聚合函数从同一个表中提取数据,但具有不同的过滤条件.我遇到的问题是SUM的结果比我只包含一个SUM函数要大得多.我知道我可以使用临时表创建此查询,但我只是想知道是否有一个只需要一个查询的优雅解决方案.
我已经创建了一个简化版本来演示这个问题.这是表结构:
EMPLOYEE TABLE
EMPID
1
2
3
ABSENCE TABLE
EMPID DATE HOURS_ABSENT
1 6/1/2009 3
1 9/1/2009 1
2 3/1/2010 2
Run Code Online (Sandbox Code Playgroud)
这是查询:
SELECT
E.EMPID
,SUM(ATOTAL.HOURS_ABSENT) AS ABSENT_TOTAL
,SUM(AYEAR.HOURS_ABSENT) AS ABSENT_YEAR
FROM
EMPLOYEE E
INNER JOIN ABSENCE ATOTAL ON
ATOTAL.EMPID = E.EMPID
INNER JOIN ABSENCE AYEAR ON
AYEAR.EMPID = E.EMPID
WHERE
AYEAR.DATE > '1/1/2010'
GROUP BY
E.EMPID
HAVING
SUM(ATOTAL.HOURS_ABSENT) > 10
OR SUM(AYEAR.HOURS_ABSENT) > 3
Run Code Online (Sandbox Code Playgroud)
任何见解将不胜感激.
我开发了一个C#程序,它从SQL Server数据库中提取数据,然后生成包含数据的Word文档.我已将程序设置为在Windows Server 2003框上作为SSIS作业的一部分运行.该程序以用户SQLSVC运行,该用户没有管理权限.当我以SQLSVC身份登录并运行程序时,它会正确执行.但是,当程序作为SSIS作业自动运行时,它会冻结在以下代码行中
Microsoft.Office.Interop.Word.Application word =
new Microsoft.Office.Interop.Word.Application();
Run Code Online (Sandbox Code Playgroud)
当我强行终止进程时,会生成以下错误消息.
Error Message: System.Runtime.InteropServices.COMException (0x80080005):
Retrieving the COM class factory for component
with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80080005.
at IepGlance.Program.CreateNewIepFiles(Dictionary`2
iepDictionary, EasyIepDataContext dbContext)
at IepGlance.Program.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)
据我所知,问题在于DCOM权限.我已经使用dcomcnfg将所有可能的DCOM权限添加到用户SQLSVC,但这没有帮助.还有其他可能的解决方案吗?
我想从SQL Server 2005数据库中删除一个SQL函数,但首先我要确保没有人调用它.我已经使用"查看依赖项"功能从数据库中删除对它的任何引用.但是,可能存在使用它的Web应用程序或SSIS包.
我的想法是让函数在每次调用时在审计表中插入一条记录.但是,除非我也知道呼叫者,否则这将是有限的价值.有没有办法确定谁调用了这个函数?