如主题中所述,当与我一起工作的开发人员创建存储过程时,正在创建新用户和架构。最初我为该开发人员分别创建了一个用户和登录名,但后来都删除了。但是,每当他们运行脚本来创建 SP 时,都会重新创建以他们的 Active Directory 名称命名的用户和架构,并将 SP 放置在该“新”架构中。
即使我删除了 SP、用户和架构,如果他们再次创建 SP,用户和架构也会回来。
有没有人对此有任何见解?
我正在使用 GUI 工具在我的 SQL Server 2016 数据库中上传数据。用于上述任务的用户已被授予 sysadmin 权限,我创建了一个专用架构来存储上述数据。这个架构是拥有的,默认为上述用户。问题是,当我上传数据时,它存储在 dbo 模式而不是专用模式中,我无法从该用户那里撤销 sysadmin priv。
请让我知道如何在不撤销 sysadmin priv 的情况下将数据上传到这个专用模式?
谢谢
在数据库中,我创建了一个具有以下角色的用户:
问题是我不想更改用户的角色,但我想授予恢复数据库的权限。
是否有解决方法只授予还原权限但不删除或更改数据库?
背景资料:
我工作的公司创建了一个应用程序,他们希望该应用程序的用户有权备份和恢复数据库,但不能创建另一个数据库或删除现有数据库。而且,他们不希望有另一个具有 角色的用户db_owner,这将允许客户随心所欲地操纵事物。
该应用程序的价格取决于客户拥有的员工人数,因此在客户端安装该应用程序时,他们使用一个文件来创建一个数据库,在其中指定所有详细信息(包括员工人数),但他们担心有人可能会多次更改文件并添加数据库,因此他们希望通过不授予任何用户执行任何操作的权限来保护实例。这很复杂,但这正是他们想要的。
我有这个查询:
SELECT * FROM table ORDER BY label ASC;
Run Code Online (Sandbox Code Playgroud)
由于标签不是英文的,它们没有按正确的顺序排序(以“ö”开头的标签不在底部/末尾)。
因此,我尝试:
SELECT * FROM table ORDER BY label COLLATE "sv-SE" ASC;
SELECT * FROM table ORDER BY label COLLATE "sv_SE" ASC;
Run Code Online (Sandbox Code Playgroud)
这些给出了关于那些不存在的排序规则的错误,这让我感到困惑。
经过一番搜索,我想出了这样做:
SELECT * FROM pg_collation;
Run Code Online (Sandbox Code Playgroud)
这表明它应该是:
sv-SE-x-icu
Run Code Online (Sandbox Code Playgroud)
当我使用该标识符时它起作用了,但是“-x-icu”的东西有什么用?那是怎么回事?我讨厌他们总是不得不弄乱标准的语言环境标识符,所以你永远不能只依赖标准的“language_location”格式。
postgresql collation unicode international-components-unicode
我的 select case when 语句有问题,我想在 select case when 语句中添加一个新列,我得到了结果,但是?????因为我已将该列设置为阿拉伯语单词,所以我试图转换新列nvarchar(55)不幸的是,我得到了相同的结果。
我怎样才能得到正确的结果?
SELECT case when ( CAST(o.startTime as time(7)) > cast(Start as time(7)))
then cast('????' as nvarchar(55))
else cast('????' as nvarchar(55)) end as stat,
userId, FirstName
from Users, TimeTable
Run Code Online (Sandbox Code Playgroud) 我想将整个数据库加载到内存中,但是我该怎么做呢?我有大约 256 GB 的内存,我的数据库大约有 200 GB,所以我可以轻松地处理内存。
当我执行select count(*) from table1sqlserver 自动将表加载到内存之后,我可以非常快速地使用表,但我想知道如何将整个数据库加载到内存中?
如果我select count(*) from在每个表上都这样做,我可以更快地工作,但是有没有其他方法可以将整个数据库加载到内存中?我想通过一个命令加载整个数据库,而不是一个select count(*) from表一个表。
我在每晚触发的 SQL 代理作业中使用 sp_send_dbmail。该作业查询我们的数据库并检查产品价格更新,如果有,它将通过电子邮件作为附件发送给我们的电子商务供应商。他们有一些自动流程,他们会更新我们的电子商务平台,但是他们的自动流程无法处理 sp_send_dbmail 提供的文件。sp_send_dbmail 似乎在结果集中的所有字符之间放置了空字符。
查看在十六进制编辑器中打开 csv 的结果:
通过文本编辑器查看我看到的预期:
sp_send_dbmail 在这里查询:
SET @FileName = 'Update_' + CONVERT(VARCHAR(12),GETDATE),105) '.csv'
SET @Query = 'Some Query'
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'me@domain.com'
@query = @Query
@attach_query_result_as_file = 1
@query_attachment_filename = @FileName
@query_result_separator = ','
@query_result_no_padding = 1
END
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
****编辑补充说明****
使用 Microsoft SQL Server 2008 R2 排序规则为 Latin1_General_CI_AS
离开 no_padding 会在每个返回的字段中留下几个尾随空格。每个空格 (20) 由空值 (00) 分隔
我不明白为什么 dbo 是 SQL Server 中唯一的授予者?还是我错了?
我的意思如下:无论我当前以哪个用户登录 SQL Server Management Studio,当我转到 Securables 下的数据库属性并授予用户一些权限并保存它并返回到 Securables 时:dbo 是显示为这些权限的授予者,这些权限是我之前授予的,而不是当前登录的用户。
为什么会这样?
在哪种情况下,我可以将 dbo 以外的其他用户视为授权人?
谢谢
据我所知,资源数据库包含有关其服务器实例中所有对象的信息,因此我认为当您从备份文件恢复数据库时,该过程的一部分是在服务器资源中注册其对象是很自然的数据库,但我找不到有关该主题的任何具体信息,也无法在本地对其进行测试。
sql-server ×9
collation ×3
t-sql ×3
unicode ×3
encoding ×2
permissions ×2
restore ×2
role ×2
schema ×2
cache ×1
case ×1
international-components-unicode ×1
memory ×1
metadata ×1
optimization ×1
postgresql ×1
security ×1
sys ×1
users ×1