小编Pro*_*eur的帖子

新发现的 SQL Server Express 使所有数据库无法访问/脱机

我们公司有几个远程站点,今天其中一名员工来找我,说他们的 SQL 报告工具停止工作。直到此时,我什至不知道此服务器、数据库或报告服务存在!

我有对服务器的 RDP 访问权限并且可以打开SQL Server Management Studio 2008 R2并且数据库似乎是SQL Server Express. 目前,我可以使用我的域管理员帐户登录到该实例,但是当我尝试扩展它时,每个数据库都会给我以下消息:

在此处输入图片说明 他们访问报告的网页给了他们以下错误:

•   An error has occurred during report processing. (rsProcessingAborted)
    o   Cannot create a connection to data source 'DNPDataSource'. (rsErrorOpeningConnection)
        ?   For more information about this error navigate to the report server on the local server machine, or enable remote errors
Run Code Online (Sandbox Code Playgroud)

当我尝试查看 SQL Server 错误日志时,出现此错误:

在此处输入图片说明

我没有sa密码。我不是 DBA,但需要尝试解决这个问题,有人能指出我开始解决这个问题的方向吗?我完全迷失了。


这是 ERROR.LOG

2013-03-27 13:14:24.34 Server      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms sql-server-2008-r2

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

如果我更新表中的列记录,不包含该列的索引会受到影响吗?

在性能方面,如果我有这样的表:

CREATE TABLE [TESTDATA].[TableA](
    [Col1] [nchar](5) NOT NULL,
    [Col2] [nchar](2) NULL,
    [Col3] [float] NULL
CONSTRAINT [TableA_PK] PRIMARY KEY CLUSTERED 
(
    [Col1] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

然后像这样创建一个非聚集索引:

CREATE NONCLUSTERED INDEX [_idx_TableA]
ON [TESTDATA].[TableA] ([Col2])
WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

如果我对表执行更新,只有更改Col3数据库才需要触摸索引_idx_TableA吗?

只是好奇性能对所有索引的影响有多大?

performance index sql-server-2008 sql-server-2008-r2 nonclustered-index

5
推荐指数
1
解决办法
883
查看次数

如何查找用户有权访问的表和视图?

我们有一个 SQL Server 2008 数据库,并且限制了所有表和视图远离特定用户 ID。多年来,我们根据用户需要一次授予一个表和视图。

我们必须这样做,因为供应商提供public了开箱即用的角色的读/写访问权限,因此我们必须为此用户创建一个角色,删除所有访问权限并仅授予他们需要的权限。

今天我们将创建一个仅包含这些表和视图的复制数据库,以便用户可以在不降低生产系统的情况下运行报告。问题是我不确定该用户可以访问哪些表和视图,因为多年来许多人一次授予访问权限。

是否有查询来检查此用户的访问权限?

PS 我是一名应用程序开发人员,所以请根据需要随意解释这一点。


编辑 - 最初如何创建角色和访问权限


------------------------------
-- CREATE ROLE db_finrep_deny
------------------------------

DECLARE @RoleName sysname
set @RoleName = N'db_finrep_deny'
IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = @RoleName AND type = 'R')
Begin
    DECLARE @RoleMemberName sysname
    DECLARE Member_Cursor CURSOR FOR
    select [name]
    from sys.database_principals 
    where principal_id in ( 
        select member_principal_id 
        from sys.database_role_members 
        where role_principal_id in (
            select principal_id
            FROM sys.database_principals where [name] = @RoleName  AND type = 'R' )) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 access-control sql-server-2008-r2 users

4
推荐指数
1
解决办法
4万
查看次数

当通过 xp_cmdshell 执行命令时,什么用户向系统发出命令?

我正在执行以下命令以从 SQL Server 中的存储过程中停止远程服务器上的服务。

----------------
-- Stop Service
----------------
SET @Command = 'sc \\' + @Server + ' stop ' + @ServiceName;
EXEC master.dbo.xp_cmdshell @Command;
Run Code Online (Sandbox Code Playgroud)

根据服务,有时这会成功执行,但有时我会收到以下错误:

[SC] OpenService FAILED 5:
NULL
Access is denied.
NULL
NULL
Run Code Online (Sandbox Code Playgroud)

我很好奇什么用户执行命令。是我登录/连接到数据库的用户吗?或者是我登录物理服务器的用户?我可以通过不同的身份验证xp_cmdshell吗?

sql-server-2008 sql-server remote xp-cmdshell

4
推荐指数
1
解决办法
3647
查看次数

这是否意味着“公共”具有完全选择、插入、更新和删除访问权限?

我正在尝试创建一个SQL Server 2008 R2只能从一个 SQL 视图中进行选择的新数据库用户。但是,无论我在以这个新用户身份登录时尝试什么,我都可以从任何表中进行选择。我运行了这个查询:

select  princ.name
,       princ.type_desc
,       perm.permission_name
,       perm.state_desc
,       perm.class_desc
,       object_name(perm.major_id)
from    sys.database_principals princ
left join
        sys.database_permissions perm
on      perm.grantee_principal_id = princ.principal_id
WHERE princ.name = 'public'
AND object_name(perm.major_id) = 'User_Table'
Run Code Online (Sandbox Code Playgroud)

并得到这些结果:

name    type_desc       permission_name     state_desc  class_desc          (No column name)
public  DATABASE_ROLE   DELETE              GRANT       OBJECT_OR_COLUMN    User_Table
public  DATABASE_ROLE   INSERT              GRANT       OBJECT_OR_COLUMN    User_Table
public  DATABASE_ROLE   REFERENCES          GRANT       OBJECT_OR_COLUMN    User_Table
public  DATABASE_ROLE   SELECT              GRANT       OBJECT_OR_COLUMN    User_Table
public  DATABASE_ROLE   UPDATE              GRANT       OBJECT_OR_COLUMN    User_Table
Run Code Online (Sandbox Code Playgroud)

这是否意味着无论登录到数据库的任何人都具有基于“公共”权限的完全访问权限?

sql-server-2008 security sql-server permissions sql-server-2008-r2

3
推荐指数
1
解决办法
1万
查看次数

我真的可以将 SQL Server Express 用作事务复制的分发服务器数据库吗?

我们公司中有一组用户直接针对我们的生产数据库运行报告。他们已经到了足以导致公司其他部门出现绩效问题的地步。

我想在我们的本地数据中心内为他们设置一个报告数据库。我们的生产数据库位于全国不同的数据中心。由于成本原因,我无法在托管生产数据库的数据中心启动另一个 SQL Server 数据库。

在做我的研究时,似乎推荐的方法是Distributor在与Publisher数据库不同的服务器上使用?

我想知道运行 SQL Server Express 的实例是否足以充当Distributor数据库的角色?这远程可行吗?

在此处输入图片说明

sql-server sql-server-2008-r2 sql-server-express reporting transactional-replication

2
推荐指数
1
解决办法
5410
查看次数