标签: sql-server-2008

连接到远程 SQL Server 2008 实例

我在当前的工作中使用 SQL Server 2008,我连接到安装 SQL Server 2008 实例的(备份)服务器的方式是从我的本地工作机到 Windows Server 2003 计算机执行远程桌面,其中 SQL Server 2008 数据库程序和数据库文件存储(也在我们的本地网络上)...

这工作正常,但唯一的问题是 SQL Server 安装没有安装 SSRS、SSIS 或 BI 工具。我知道安装这些功能相当容易,但我想知道我是否能够通过互联网连接(而不是 LAN)在完全不同的计算机上使用不同的 SQL Server 2008 安装连接到数据库?

例如,如果我在家用计算机上安装了全新的 Sql Server 2008 并具有所有需要的功能(SSIS、SSRS、BI 工具),我是否能够打开 Management Studio 并连接到 SQL Server 2008 数据库服务器/引擎在我的工作场所?

sql-server-2008

6
推荐指数
1
解决办法
1129
查看次数

带有手动故障转移的 SQL Server 2008 镜像数据库,需要报告数据库

我们当前的设置是生产中使用的主要数据库,带有用于 HA 的手动故障转移镜像数据库。

我还需要设置一个报告数据库。最好的方法是什么?我应该设置一个 SQL 作业来删除和创建镜像数据库的快照并每晚刷新吗?

有没有人有其他建议?

谢谢

sql-server-2008 mirroring snapshot reporting

6
推荐指数
2
解决办法
1172
查看次数

复杂查询的优化——100% 成本索引查找?

我是 ac# 开发人员,但是我对 SQL 很有经验。我在优化查询方面有一些经验,但我遇到了一个让我难倒的经验。

查询大约需要 3 分钟才能运行大约 20,000 行。行立即开始流式传输,但在 3 分钟内,SQL 服务器 cpu 固定在 100%。

在这种特殊情况下,我的查询执行得很好,直到客户要求我用 20k 行测试它们。这 20k 行(客户)分布在 20 个从业者中(所以每个人大约 1000 个)

这是我的相关表的数据库架构:

在此处输入图片说明

该查询使用递归 CTE 来收集给定源从业者的(n 级)客户端树。然后它连接到一些 FK 类型的表以收集额外的信息。

看起来放缓来自加入权限表,权限表代表哪些从业者管理哪些客户端。

在此处输入图片说明

pooling.ClientAccountInheritedRateGrouppooling.ClientAccountFirstContact并且pooling.PractitionerAccountFirstContact是所有视图,所有视图都以亚秒选择返回完整数据集。

是的,现在进行实际查询(对不起,它有点像怪物):

with h (distance, id, name, parentid, [path]) as ( 
select 
    0,
    pa.id,
    pa.name,
    null,
    convert(varchar(80), ltrim(str(pa.id))) as node_seq
from     
    pooling.practitioneraccount pa
    left outer join pooling.practitioneraccountrelation as par
        on pa.id = par.childid
where  
    pa.id = @PractitionerAccountId
    or (@PractitionerAccountId is null and …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server query-performance

6
推荐指数
1
解决办法
3927
查看次数

计算组内的中值

我有一个存储过程,它计算10 分钟间隔内请求/响应周期的平均持续时间。这很有效,适合我绘制图表的需求。我接下来想做的是计算值......我怀疑我需要一个子查询,但不知道如何完成这个。

SELECT dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * 10, 0) AS [Time]
     ,AVG(CASE WHEN Duration is null OR Duration = 0 
              THEN null ELSE Duration 
          END) AS [Mean Response Time]
FROM [Application].[Exchange] WITH (NOLOCK)
WHERE [Started] >= '24 Oct 2012' AND [Started] < '25 Oct 2012'
GROUP BY dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * 10, 0) 
ORDER BY dateadd(minute, 10 + (datediff(minute, 0, [Started]) / 10) * …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server aggregate t-sql azure-sql-database

6
推荐指数
1
解决办法
1847
查看次数

我应该如何模拟状态/活动的工作流?(规则如“如果是 3 转到 4,如果是 4 转到 5”等)

我正在尝试对工作流(状态和活动)进行建模以创建“规则”。

让我给你举个例子。

主要的“对象”让我们说是“车辆要求”,我会有这张表:

idRequirement, idVehicle,DateOfRequirement, idStatus, LastUpdate
1                2       2012-01-02 10:20:00, 1     ,2012-01-02 10:20:00
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,因为寄存器刚刚创建,DateOfRequirement 和 LastUpdate 是相同的,LastUpdate 将在每次状态更改后更新。

状态表

 idStatus,Status
 1         New
 2         Vehicle Assigned
 3         Closed
Run Code Online (Sandbox Code Playgroud)

活动表

 idActivitie, Activitie
 1            Create Vehicle Requirement
 2            Assign Vehicle
 3            Close requirement.
 4            ReAssign Vehicle.
 5            Confirm
Run Code Online (Sandbox Code Playgroud)

直到上表我都没有问题,但我的问题是,例如:

我知道如果当前状态不是“车辆已分配”(idStatus=2),我无法关闭要求(在“车辆要求”上更新到 idStatus=3)。

我可以通过代码来做到这一点(或者我认为是这样),但是无论如何都可以将这种规则建模到表格中吗?我的意思是一个表格,我在其中检索下一个 idStatus 和要执行的活动(以保存每个需求及其活动的“kardex/历史”),例如检查活动或当前状态?

规则还将根据时间和状态设置 3 个“警报”。例如,分配车辆的“绿色”限制时间为 30 分钟或更短,黄色“警报”在创建需求后将在 31 到 45 之间(状态为新),红色警报将在 45 分钟后显示状态为“新”

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned  Green
Run Code Online (Sandbox Code Playgroud)

39 分钟后,它会是这样的:

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 database-design relational-theory

6
推荐指数
1
解决办法
1241
查看次数

对具有提升权限的集群执行 Powershell SMO 以更新服务帐户

我正在使用 Powershell 脚本来更新故障转移集群中命名 SQL 实例上的服务帐户。我正在尝试使用 SMO 和 WMI 来更新它,以便我可以更新主动节点上的服务帐户并将其填充到其他被动节点(如果我在配置工具中手动更新会发生这种情况)。我正在尝试在本地机器上执行脚本但更新远程服务器。根据我的 Google 搜索,我看到的错误似乎与安全相关,如果我在远程计算机上以提升的权限(以管理员身份)本地运行脚本,则该错误会成功。

编码:

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null
$mc=New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer "SQLHOST01"

$srvcs= $mc.Services | Where {$_.name -like "*INSTANCE01*"} | Where {$_.Type -like "Sql*"}

$srvcs | ft name,servicestate,serviceaccount

foreach ($s in $srvcs){
    $s.SetServiceAccount("FOO\Bar","strongpass")
}
Run Code Online (Sandbox Code Playgroud)

错误:

Exception calling "SetServiceAccount" with "2" argument(s): "Set service account failed. "
At line:11 char:5
+     $s.SetServiceAccount("FOO\Bar","strongpass")
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : FailedOperationException
Run Code Online (Sandbox Code Playgroud)

使用:Windows 2008 R2(远程)SQL 2008 R2(远程)Windows 7 with SQL 2012 …

sql-server-2008 sql-server clustering powershell

6
推荐指数
1
解决办法
1591
查看次数

知道数据库何时恢复

我正在使用 SQL Server 2008。我想知道是否已从设备恢复了特定的数据库以及它何时发生。是否可以?

sql-server-2008 sql-server restore

6
推荐指数
1
解决办法
7178
查看次数

我需要帮助使用hierarchyid 数据类型并需要对 varchar 字段的唯一约束

我想使用hierarchyid标识符将一堆具有父->子->孙关系的表解析为单个表。这是我根据我所拥有的得出的。

    CREATE TABLE [dbo].[tbl_server_group]
    (
        [refid]     [int] IDENTITY(1,1) NOT NULL,
        [refhid]    [hierarchyid] NOT NULL,
        [reflvl]    AS refhid.GetLevel() PERSISTED,
        [refdate]   [datetime] NOT NULL DEFAULT GETDATE(),
        [refname]   [varchar](50) NOT NULL
    )
Run Code Online (Sandbox Code Playgroud)

我的问题是我需要能够要求 refname 是唯一的,但只能在它所在的容器内。由于我使用它来表示服务器,我想模拟各种 DNS 树,但添加其他层它也是。我的例子如下:

    ROOT
    | something.com
    || www
    ||| index.html
    || staging
    ||| testbed.php
    | someotherthing.com
    || test
    ||| index.html
Run Code Online (Sandbox Code Playgroud)

我想确保something.com 只有一个“www”,而www 只有一个“index.html”。

有没有办法用约束来做到这一点?如果没有,是否有一种有效的方法来强制唯一性?

谢谢

sql-server-2008 sql-server constraint hierarchy

6
推荐指数
1
解决办法
789
查看次数

需要改进视图性能的建议

我希望提高 SQL Server 2008 中视图的性能。这个视图存在于一个报告数据库中,非技术人员广泛使用该数据库来基本上对一个人的所有这些属性进行非规范化。

这是一个非常复杂的长期运行视图。我们有超过 1900 万人,每一列都有很多逻辑。例如,有一个关于一个人是否已故的指标,它依赖于三个 CTE(公共表表达式)和一个 case 语句。

基本上,这是一场噩梦。

我需要想办法提高性能。无法将其更改为表格 - 数据必须准确无误。将其更改为索引视图是正确的 - 它使用来自多个数据库的数据。我无法真正修改列结构,因为它会破坏许多现有报告。

工具箱中是否有可能有帮助的工具?我想知道存储过程或函数是否有帮助。也许是一个带有计算列的表?我将能够每晚提取此人的识别信息并将其存储到表格中,但绝大多数列依赖于实时数据。

performance sql-server-2008 database-design sql-server view query-performance

6
推荐指数
1
解决办法
6879
查看次数

授予权限

我有一个数据库角色、-login 和用户

CREATE LOGIN dummyLogIn WITH PASSWORD = 'dummyPassword', CHECK_POLICY = OFF;
CREATE USER dummyUser FOR LOGIN dummyLogIn;
CREATE ROLE "dummyRole";
Run Code Online (Sandbox Code Playgroud)

与角色相关的用户:

EXECUTE sp_addrolemember N'dummyRole', N'dummyUser';
Run Code Online (Sandbox Code Playgroud)

一切都很好。

现在我将 select WITH GRANT OPTION 授予指定表的组:

GRANT SELECT ON "dbo"."mytable" TO dummyRole WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

仍然一切正常。如果我在 ssms 中查找角色的首选项,我会看到“dummyUser”是该角色的成员,并且该角色对 myTable 具有 SELECT 权限,包括授予选择的权限(两个复选框都在首选项窗口中进行了标记)

如果我尝试向另一个组授予选择权限,该权限肯定存在,我会收到一条错误消息(没有 15151):无法搜索对象“myTable”,因为对象不存在或必要的权限不存在。(错误消息是德语;))。

我可以轻松地在上述表格上进行选择 - 所以我假设该对象确实存在。在我看来,我应该能够向另一个组授予选择权限。

@附加:

引发错误的查询:

GRANT SELECT ON "dbo"."mytable" TO childDummyRole(以用户dummyUser登录)

childDummyRole 和引用对象的创建方式与上述对象相同:

CREATE LOGIN childDummyLogIn WITH PASSWORD = 'childDummyPassword', CHECK_POLICY = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008

6
推荐指数
1
解决办法
192
查看次数