如何在sqlserver建立新用户并关联相应的数据库

Frankly speaking, setting database user permissions on SQL Server is actually very simple, but there are a few key points that can easily cause problems.
我们先来说说最重要的事情。
创建用户时,必须指定默认数据库和对应的schema。
比如我们去年做的项目,直接省略了图,用户连表格都看不到。
说实话,当时挺尴尬的。
还有一点,创建用户之后,不要急于下一步。
单击[确认]按钮。
起初我以为这样可以救他,但后来我发现这是错误的。
如果不单击“确认”,我什至无法添加安全对象。
还有另一个关键细节。
数据库级用户是全局的,但一旦链接到数据库,就只能在该数据库内进行管理。
For example, the TestLog user cannot be deleted and must first be deleted in [Security] of TestLog, otherwise an error will be reported directly.
等一下,还有一件事。
如果在显式权限中选择【控制】,其他权限基本没用。
用行话来说,这称为雪崩效应。
事实上,前面的一点延迟就会导致后面的一切都崩溃。

温馨提示:设置权限时不要急于使用【控制】。
除非你真的需要它,否则它很容易滑动。

如何在sqlserver建立新用户并关联相应的数据库

错误如下:直接创建用户而不检查是否启用了 SQL Server 身份验证。

实用注意事项:在创建用户之前,首先验证是否启用了 SQL Server 身份验证。

SqlServer将数据库中的表复制到另一个数据库

说白了,将SqlServer表复制到另一个数据库只需要两步:移动结构和移动数据,但中间却潜伏着很多陷阱。

我们先来说说最重要的事情。
在复制表结构的时候,我们去年做了一个千万级数据的项目。
如果我们直接使用工具生成脚本来替换库名称,它会挂起,因为原始脚本还包含许多特定数据库的依赖语句。
后来改用动态SQL批量替换,终于搞定了。
还有一点是,在运行脚本之前,首先要检查目标库中的字段类型和长度。
例如,varchar(1 00) 在两个库中可以被视为不同的类型。
我扯远了,很多人不注意这个。
稍等一下:如果源表有触发器或者默认值,需要单独维护,否则数据导入时会出错。

思路:本来以为把数据导出为CSV然后导入就可以了,但是发现文件中SqlServer的十进制类型的精度会丢失,这真是一个陷阱。

结束:建议使用PowerShell脚本批量处理结构体复制,效率更高,省事。
复制数据时不要忘记打开错误日志。
如果特定记录的格式错误,可以快速找到。