SQL Server 数据库开发标准

发布于 2024-07-26 03:13:35 字数 537 浏览 6 评论 0原文

我必须为我们的组织制定 SQL Server 及其接口代码的数据库开发标准。 使用的代码可以是从 .NET 代码到 VBScript 到 SQL Server 作业的任何代码。

有没有人有此类事情的良好链接?

我的快速列表如下:

1)命名约定
-- 存储过程 usp_AppName_SPName
-- 函数 usf_AppName_SPName
-- 索引 IX_TableName_IndexName
-- 表 AppName_TableName
-- 视图 VW_Name


2) 将权限分配给角色,而不是直接分配给用户或组
3) 将角色分配给组,而不是直接分配给用户
4) 使用最小权限
5)代码中没有内联sql,总是使用SP或函数
6) 使用显式事务
7) 只读事务(如果适用)
8) 始终使用解释计划来确保 sql 的性能。

我们还需要涵盖哪些其他内容? 我确信有很多事情......

I have to develop database development standards for our organisation for SQL Server and any code that interfaces to it. The code used can be anything from .NET code to VBScript to SQL Server Jobs.

Does anyone have a good link for this kind of thing?

My quick list is follows:

1) Naming Conventions

-- Stored Procedures usp_AppName_SPName

-- Functions usf_AppName_SPName

-- Indexes IX_TableName_IndexName

-- Tables AppName_TableName

-- Views VW_Name

2) Allocation of permissions to roles, never directly to users or groups

3) Allocation of roles to groups, never directly to users

4) Use of minimal permissions

5) No inline sql in code, always use SP or Functions

6) Use of explicit transactions

7) Readonly transactions where applicable

8) Always use explain plans to ensure sql is performant.

What other things do we need to cover? I am sure that there are lots of things....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

烟火散人牵绊 2024-08-02 03:13:35

由于我们正在讨论最佳实践,因此我会提出一些要避免的事情:

  1. 避免使用 xp_cmdshell
  2. 避免动态 sql,除非严格遵守
    必要时(例如动态旋转)
  3. 避免光标(如果不在临时
    表)

PS 顺便说一句 - 我正在做以上所有的事情;)

Since we are talking best-practices I'd throw in a few things to avoid:

  1. avoid use of xp_cmdshell
  2. avoid dynamic sql unless strictly
    necessary (such as for dynamic pivoting)
  3. avoid cursors (if not on temp
    tables)

P.S. Btw - I am doing all of the above ;)

暖树树初阳… 2024-08-02 03:13:35

还可以考虑使用多个模式。 使用 AppName.TableName 而不是 AppName_TableName,其中 AppName 是架构。 例如,AdventureWorks 示例就是这样做的。

Also consider using multiple schemas. Use AppName.TableName instead of AppName_TableName, where AppName is a schema. The AdventureWorks sample does this, for instance.

仅此而已 2024-08-02 03:13:35

我必须立即对你的第一个项目提出异议。 虽然我知道很多人喜欢对存储过程、表等使用前缀,但我从未过多使用过该约定。 当您开始获得大量以“usp_”开头的存储过程,并且单击以展开 Management Studio 中的“Programmability\Stored procedures”文件夹时,导航起来可能相当笨拙。

相反,需要一个前缀来匹配逻辑功能集/功能组。 这些前缀的含义因应用程序或数据库而异。 然后,如果您想区分存储过程和表,请添加“_usp”要求作为后缀

对于表:您希望命名约定中的某些内容能够区分应用程序数据(查找表)和用户数据。

I have to take issue with your first item right off the bat. While I know a lot of people like to use prefixes for stored procedures, tables, and the like, I've never had much use for that convention. When you start to get a lot of stored procedures that all start with "usp_", and you click to the expand the "Programmability\Stored Procedures" folder in Management Studio, it can be rather unwieldly to navigate.

Instead, require a prefix to match the logical feature set/functional group. What those prefixes are will vary by application or database. Then if you want to distinguish a stored procedure from a table, add your "_usp" requirement as a suffix.

For tables: you want something in your naming convention to distinguish between Application data (lookup tables) and User data.

寄离 2024-08-02 03:13:35

SQL Server 中的角色和组不是同一件事吗?

其他一些...

  1. 避免在 WHERE 子句中使用 UDF

  2. 禁止在应用程序中直接使用 SQL
    (始终使用 SP)

  3. 在前面使用注释块
    视图/过程/函数包括
    修订历史和/或修订
    日期
  4. 使用 ANSI 连接语法
  5. 限制触发器的使用,尤其是
    对于复制表

Aren't roles and groups the same thing in SQL Server?

A few others...

  1. Avoid using UDFs in WHERE clauses

  2. Disallow direct SQL in applications
    (always use SPs)

  3. Use comment blocks in front of
    views/procs/functions including a
    revision history and/or revision
    date
  4. Use ANSI join syntax
  5. Limit use of triggers, especially
    for replicated tables
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文