小编Lee*_*DBA的帖子

TFS 2012 - 数据库项目 - 没有登录映射到 Windows 的用户 - 最佳实践

我在 TFS 2012 中有一个 SQL Server 数据库项目 (.NET 4.5)。作为 DBA,我正在寻找一种机制,开发人员可以通过该机制创建“CREATE USER”sql 脚本并在数据库中分配他们的权限以匹配应用程序,而无需需要知道它最终映射到什么登录名。这是因为我想隐藏实时和测试环境中的登录名,并让 DBA 根据需要在每个环境中创建这些登录名。

如果我进入项目并创建一个新用户,即 [MyApplication],则默认脚本建议使用以下模板:

CREATE USER [MyApplication]
    WITHOUT LOGIN
    WITH DEFAULT_SCHEMA = dbo
GO
Run Code Online (Sandbox Code Playgroud)

这很棒,因为我可以创建一个映射到无登录的用户,然后在部署时我可以运行:

ALTER USER [MyApplication] WITH LOGIN=[MyApplicationLogin], Name=[MyApplication]
Run Code Online (Sandbox Code Playgroud)

只要将用户映射到 SQL 登录名就可以了。如果登录要映射到 Windows 登录,当我们尝试重新映射时,SQL 会抛出错误:

Msg 33016, Level 16, State 1, Line 1
The user cannot be remapped to a login. Remapping can only be done for users that were 
mapped to Windows or SQL logins.
Run Code Online (Sandbox Code Playgroud)

所以问题是,在项目中设置它的最佳方法是什么,以便开发人员可以创建一个用户,该用户可以在数据库用户中任意命名,然后我们将如何将其重新映射到 Windows 身份验证登录?

提前致谢!

security sql-server sql-server-2012

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

SQL Server Backup 是单线程还是多线程?

如果您执行...

BACKUP DATABASE [DB_Name] TO DISK=N'c:\backups\db_name.bak' WITH STATS=10
Run Code Online (Sandbox Code Playgroud)

这将执行单线程还是多线程写入?

我们的服务器支持公司建议我们,如果我们对备份进行多线程处理,我们将获得更好的磁盘写入性能。他们建议我们 SQL 备份是多线程的,但我认为上面的语句是单线程的。如果我们指定要写入的多个磁盘,那么它将跨多个设备对备份进行条带化,因此根据我的理解是多线程的。

如果我在备份处理时执行以下 T-SQL,我可以看到执行备份的 SPID 有多个进程,但似乎只有一个进程写入磁盘,我认为其他进程正在读取和执行其他操作。这只是我提到问题的写线程。

USE MASTER
GO

SELECT *
FROM sys.sysprocesses p
INNER JOIN sys.dm_exec_requests r ON p.spid = r.session_id
WHERE spid=(spid of backup T-SQL)
Run Code Online (Sandbox Code Playgroud)

提前致谢。

performance sql-server backup

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