我很久以前在某个地方读过。这本书指出我们不应该允许在 SQL Server 中使用嵌套视图。我不确定我们不能这样做的原因,或者我可能记得不正确的陈述。
学生们
SELECT studentID, first_name, last_name, SchoolID, ... FROM students
CREATE VIEW vw_eligible_student
AS
SELECT * FROM students
WHERE enroll_this_year = 1
Run Code Online (Sandbox Code Playgroud)
老师
SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers
CREATE VIEW vw_eligible_teacher
AS
SELECT * FROM teachers
WHERE HasCert = 1 AND enroll_this_year = 1
Run Code Online (Sandbox Code Playgroud)
学校
CREATE VIEW vw_eligible_school
AS
SELECT TOP 100 PERCENT SchoolID, school_name
FROM schools sh
JOIN
vw_eligible_student s
ON s.SchoolID = sh.SchoolID
JOIN
vw_eligible_teacher t
ON s.SchoolID = t.SchoolID
Run Code Online (Sandbox Code Playgroud)
在我的工作场所,我调查了我们的一个内部数据库应用程序。我检查了对象,发现有两到三层的视图相互堆叠。所以这让我想起了我过去读过的东西。有人可以帮忙解释一下吗?
如果这样做不行,我想知道它仅限于 …
我听说它说您不想使用动态 SQL。你能给我一些具体的或现实生活中的例子吗?
就个人而言,我在我的数据库中多次使用它进行编码。我认为这是可以的,因为它的灵活性。
我的猜测是关于 SQL 注入或性能。还要别的吗?
我有一个旧的数据库服务器。写它的人早已不在了。根本没有文档,只有代码中的一些注释。幸运的是,这并不复杂,但如果我想修复它(来自用户的请求),调查所有相关的数据库对象(表、视图或存储过程)需要时间。
最近,我收到我们 IT 部门人员的建议,我应该将我们的数据库升级到更新的数据库版本 (2005/2008)。现在,它是 SQL Server 2000。他说它将有更好的性能和安全性。我想如果我升级到新版本,我们的旧机器(硬件)可能不足以支持新的数据库引擎。目前,据用户称,响应时间是可以接受的。
我试着去思考所有的利弊。我宁愿不升级,但我想确保我不会错过任何东西。
不升级
升级
问题是:我该怎么办?升级或不升级我们的数据库服务器。