标签: sql-server-2012

为单个包含的数据库创建用户

我是使用 MSSQL 的新手,目前有 2012 版本。我要做的是为包含的数据库创建一个用户,并仅授予该用户访问该数据库的权限。

我将使用准备好的语句从 JAVA 调用此 SQL。

sql-server sql-server-2012

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

获取失败或从未提交的事务

有什么地方可以查找 SQL Server 2012 中的失败事务吗?

sql-server transaction sql-server-2012

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

从扩展事件会话收集参数值

我正在使用扩展事件来跟踪我们的应用程序使用的语句。我创建了一个会话来收集我想要的信息,除了我还想知道所使用参数实际值

我在非生产环境中执行此跟踪,跟踪影响的任何性能都是可以接受的。

所有查询都源自 Hibernate,并以以下形式参数化:

SELECT a, b, c From Customer where CustomerId = @P0
Run Code Online (Sandbox Code Playgroud)

这是我的会话设置。

CREATE EVENT SESSION [TracingForStatements] ON SERVER 
ADD EVENT sqlserver.sp_statement_completed ( 
    ACTION (    
        sqlserver.session_id,
        package0.collect_system_time,
        sqlserver.transaction_id,
        package0.event_sequence
    ) 
    WHERE ( 
        sqlserver.database_id=555
    ) 
) 
ADD TARGET package0.ring_buffer(SET max_memory= 128000)
WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS, 
      MAX_DISPATCH_LATENCY = 1 SECONDS)
Run Code Online (Sandbox Code Playgroud)

如何捕获捕获语句中使用的参数的实际值?是否可以?

--编辑(解决方法):将事件更改为 rpc_completed 为我提供了从 Hibernate 调用的完整 sql 命令(包括所有参数值)。对于其他情况,如果可能,知道如何捕获参数值仍然很好。

extended-events sql-server-2012

10
推荐指数
1
解决办法
3972
查看次数

如何编写对架构的所有权限的脚本

SQL 管理工作室允许为所有 db 对象创建脚本,但是到目前为止我找不到正确编写模式或用户脚本的方法。用户对架构的权限不包含在创建的脚本中。我做错了什么还是微软她有点马虎?

ssms scripting sql-server-2012

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

如何查找数据库中没有显式主键的所有表?

Google 搜索在如何查找没有聚集索引的表上产生了数百万次点击,PK 通常是表的聚集索引。然而,一个表很容易有一个自然键作为聚集索引,和一个非聚集代理索引,如标识列。

如何在没有定义主键的情况下查找数据库中的所有表?我在这个数据库中有 245 个表:手动检查效率非常低。

sql-server primary-key sql-server-2012

10
推荐指数
2
解决办法
1296
查看次数

服务帐号使用数据库邮件需要什么权限?

我有一个在托管服务帐户下运行的 SQL Server 2012 实例。我已经用一个帐户配置了数据库邮件,并试图发送一封测试电子邮件,但我在服务器的事件日志中收到了一些错误:

数据库引擎实例=MYINSTANCE;邮件PID=2132;错误消息:数据库更新失败。原因:对象“sysmail_logmailevent_sp”、数据库“msdb”、架构“dbo”上的 EXECUTE 权限被拒绝。

数据库引擎实例=MYINSTANCE;邮件PID=2212;异常类型:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException 消息:数据库读取失败。原因:对象“sp_readrequest”、数据库“msdb”、架构“dbo”上的 EXECUTE 权限被拒绝。数据:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand) HelpLink:NULL 来源:DatabaseMailEngine

如果我将运行 SQL Server 进程的帐户设置为系统管理员,则此错误将消失,并且邮件发送成功。但是,我所做的所有研究都表明,赋予此帐户DatabaseMailUserRolemsdb数据库中的角色就足够了。我已经这样做了,但仍然收到相同的错误。

我查看了 BOL,但找不到任何东西。

sql-server permissions sql-server-2012 database-mail

10
推荐指数
1
解决办法
4010
查看次数

SQL Server 2012:Security_error_ring_buffer_recorded:ImpersonateSecurityContext

我管理的几台服务器在 system_health XE 会话中记录了很多事件。

error_code 5023 应该是(系统错误代码):

ERROR_INVALID_STATE    5023 (0x139F)

The group or resource is not in the correct state to perform the requested operation.
Run Code Online (Sandbox Code Playgroud)

我在事件安全日志和 SQL Server 日志中都没有登录失败事件。

sql-server-2012

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

AlwaysOn 可用性组自动故障转移不起作用

在玩 AG 设置时,我启动了 WSFC,并在一个名为 DevClusterOnline 的可用性组中配置了两个节点。两个节点(DEV-AWEB5 主节点,DEV-AWEB6 辅助节点)都运行 Windows Server 2008 R2。

如果我检查我的 AG 的健康状况,我会得到:

可用性组运行状况描述

运行下面的查询将返回此结果集: 同步提交和自动故障转移设置

select
    ar.replica_server_name,
    availability_group_name = ag.name,
    ar.availability_mode_desc,
    ar.failover_mode_desc
from sys.availability_replicas ar
inner join sys.availability_groups ag
on ar.group_id = ag.group_id
order by availability_group_name, replica_server_name;
Run Code Online (Sandbox Code Playgroud)

如果我断开 DEV-AWEB5,我无法连接到组侦听器 (DevListener),但是我可以 ping 它并且它会响应我的 ping。副本 - DEV-AWEB6 进入 RESOLVING 状态,我的数据库无法访问。但是,我可以手动进入 Management Studio 并将故障转移设置为 DEV-AWEB6,然后我再次启动并运行,DevListener 将再次接受连接。

考虑到这些事实证实故障转移确实有效,我已经同步提交并配置了自动故障转移,我不知道如果我的设置出现故障怎么办。

当我断开 DEV-AWEB5 的连接时,我希望我的副本会保持连接,因此 DevListener 也会保持连接。我希望自动故障转移将允许我透明地连接到 AG 侦听器。从最终用户的角度来看,使用 Web 系统应该不会注意到其中一台数据库服务器出现故障。

我被困在这里,有人能告诉我我做错了什么吗?

sql-server sql-server-2012 availability-groups

10
推荐指数
1
解决办法
9719
查看次数

SQL Server 2012 复制数据库失败

我想在同一个 SqlServer 中制作数据库的副本。所以,当我使用复制数据库向导时,它会抛出错误:(我用测试数据库做了这个步骤,它工作正常!!!)

配置:

用户

方法:“使用 SQL 管理对象方法”

为目标数据库选择新名称。

错误:

标题:复制数据库向导

作业失败。有关详细信息,请检查目标服务器上的事件日志。

- - - - - - - - - - - - - - - 纽扣:

好的

在事件日志中:

  • 系统

    • 提供者

    [名称] SQLSERVERAGENT

    • 事件 ID 208

    [限定词] 16384 Level 3 Task 3 关键词 0x80000000000000

    • 时间创建

    [ SystemTime] 2014-05-07T06:23:11.000000000Z EventRecordID 123672 Channel Application Computer Server1 Security

  • 事件数据

    CDW_Server1_Server1_3 0x666DE807F406D7438C65B09171211D7B
    失败 2014-05-07 10:52:50 作业失败。作业由用户 sa 调用。运行的最后一步是步骤 1 (CDW_Server1_Server1_3_Step)。

日志文件的最后几行:

OnProgress,Server1,NT Service\SQLSERVERAGENT,Server1_Server1_Transfer Objects 任务,{066BD090-26F3-45D8-AD60-B207D56D44CE},{1CF7B713-F747-45FB-8936-5522651,E0C76A,580C70A /7/2014 10:08:46 AM,0,0x,1 个数据库的数据库传输失败。OnProgress,Server1,NT Service\SQLSERVERAGENT,Server1_Server1_Transfer Objects 任务,{066BD090-26F3-45D8-AD60-B207D56D44CE},{1CF7B713-F747-45FB-8936-5522651,E0C76A,580C70A /7/2014 …

sql-server sql-server-2012

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

域管理员无法连接到 SQL Server

我有一个 Windows Server 2012 R2 域控制器和一个数据库服务器 (W2K12R2/SQL Server 2012)。

作为允许的用户组,我已授予组“域管理员”系统管理员权限。

但是不知何故,任何域管理员都无法连接到该 SQL Server,但是当我将域管理员用户直接添加为允许的用户时,它确实可以工作。活动目录确实有效。RDP-登录有效。我错过了什么吗?

有谁知道如何授予对整个组“域管理员”的访问权限?

错误信息是:

服务器名称:SRV-DB
错误编号:18456
施韦雷格勒:14
状态:1
代码行:65536

在事件日志中它说(翻译):

检查基于令牌的服务器访问时发生基础结构故障时出错。

状态为 "1" 。我以域管理员身份使用 RDP 登录到该数据库服务器。我必须以“以管理员身份运行”明确启动 SSMS。然后我可以访问“本地主机”。如果我不以管理员身份启动 SSMS,那么我就不能这样做。我认为加入“域管理员”组就足够了。

sql-server permissions sql-server-2012 connectivity

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