我的许多数据库都有定义为 varchars 的字段。自从我在美国生活和工作以来,这并不是什么大问题(那里唯一存在的语言是“美国”。咳咳)
在使用数据库大约 5 年后,我发现我最终遇到了 varchar 字段的有限性质的问题,我必须修改我的字段以将数据存储为 nvarchars。在不得不对表进行另一次更新,将 varchar 字段转换为 nvarchar 之后,我有了一个想法——为什么我们仍然这样做?我早就决定将所有新的文本字段定义为 nvarchar,而不是 varchar,这是我 10 年前在学校时从教科书中学到的。
现在是 2011 年,去年发布了新版本的 SQL Server。当我们可以/应该使用 nvarchar 时,为什么我们继续支持 varchar 数据类型?
我知道经常有人争论 nvarchars 是 varchars 的“两倍大”,因此存储空间的使用可能是维护 varcars 的一个争论点。
但是,今天的用户如果想节省存储空间,可以定义他们的 nvarchars 以将数据存储为 UTF-8 而不是默认的 UTF-16。如果主要需要,这将允许 8 位编码,同时保证插入到他们的数据库中的稀有 2-8 字节字符不会破坏任何东西。
我错过了什么吗?在过去的 15 到 20 年里,这是否有充分的理由没有改变?
sql-server-2008 database-design sql-server sql-server-2008-r2
我有一个 SQL Server 实例,每晚运行 5 个计划任务,每个任务都运行 SSIS 包。
这些包已运行多年,相关步骤通过代理帐户 (PackageExecutor) 运行。PackageExecuter 与以前是域管理员帐户的 SQL 凭据相关联。
很快,与此管理员帐户关联的域将被关闭。我必须在新域上使用一个新帐户作为与我的 roxy PackageExecutor 关联的管理员帐户。当我为新的管理员帐户创建一个新的凭据并将其与 PackageExecutor 关联时,当我尝试运行我的 SQL 作业之一作为测试时,我开始收到以下错误:
Unable to start execution of step 1 (reason: Error authenticating
proxy *Domain\Admin_Account*@*fully.qualified.domain.com*, system
error: Logon failure: unknown user name or bad password.). The step
failed.
Run Code Online (Sandbox Code Playgroud)
如果我理解这个相当明确的错误,它告诉我的是与我的代理关联的凭据帐户是正确的。我如何验证这一点?
我知道这个帐户是合法的——我已经将它与每个关联的服务器组相关联,我已经将它设置为服务器上的 sysadmin 用户。
什么可能导致这个问题?
需要明确的是,我没有错误输入与代理凭据关联的帐户名或密码。但是,当我输入帐户名Domain\Admin_Account并单击“检查名称”按钮时,SQL Server 会自动将用户 ID 转换为完全限定版本。我不确定这是否与此问题有关。
我有点不知所措。我已授予我的凭证帐户对我能想到的所有内容的完全访问权限。我可能需要做什么才能让它发挥作用?
更新
抱歉,再提一提。我找到了这篇 MSDN kb 文章。解决方法#1 是我多年来一直在做的。其他人似乎不适用,或者我遗漏了一些东西。任何提示或澄清将是有益的。
我正在使用 SQLite 为 Android 编写应用程序(如果重要,由 ORMlite 支持)。到目前为止,我处于概念阶段并致力于数据库设计。该数据库旨在包含注册给一个或多个用户的资产集合。我从来没有处理过 SQLite 之外的任何数据,即便如此,我也只制作了几个非常小的数据库。因此,我不确定我是否正确处理了这个设计。当我扩展我的设计时,它开始看起来像一团糟。我的问题是:
作为参考,这里有一个较早的更易于阅读的数据库设计原型。尚未分配类型,抱歉。

这是我的问题的更新可视化。

我不确定它何时发生,但我已经开始注意到我的企业管理器网格中的一些主机有一个名为 UTILITY_DSN 的目标。有谁知道这是什么?我今天注意到的那个是在重新安装代理后出现的。它显示为一个数据库实例,但具有不存在的 Oracle 主目录。