Sql server 创建通用数据库的多个实例
目前,我正在尝试建立一个向学生分发通用数据库的设置。他们将使用这个数据库开发一个应用程序(比如购物车应用程序),将他们的项目提交到我们的服务器上,然后它将自动评分 这些数据库正在Microsoft SQL Server 2005中运行 我们使用用户实例来实例化每个数据库,并且可以同时为多个请求提供服务。但是,问题是,当一个以上的学生提交了一个要评分的项目时,要实例化的第一个数据库将是唯一的数据库,并且将覆盖当前打开的所有其他副本 因此,如果stu1修改了他的数据库,stu2和stu3同时对他们的项目进行评分,那么在评分结束时,stu1、stu2和stu3在最后会有相同的DB 是否有任何方法可以拥有通用数据库的多个独立副本,每个副本都可以并发加载和修改,而不会对任何一个数据库进行任何更改,从而影响其他数据库 我读了一点书,认为可以按照以下思路做一些事情:Sql server 创建通用数据库的多个实例,sql-server,sql-server-2005,Sql Server,Sql Server 2005,目前,我正在尝试建立一个向学生分发通用数据库的设置。他们将使用这个数据库开发一个应用程序(比如购物车应用程序),将他们的项目提交到我们的服务器上,然后它将自动评分 这些数据库正在Microsoft SQL Server 2005中运行 我们使用用户实例来实例化每个数据库,并且可以同时为多个请求提供服务。但是,问题是,当一个以上的学生提交了一个要评分的项目时,要实例化的第一个数据库将是唯一的数据库,并且将覆盖当前打开的所有其他副本 因此,如果stu1修改了他的数据库,stu2和stu3同时对他们的
我不确定这是否会解决我们的问题或可能,所以任何帮助将不胜感激 简单的解决方案是让他们唯一地命名数据库。实际上,从一开始就开发他们的代码来使用这个唯一的名称。难道你不能要求学生把他们的数据库命名为STU_1234,其中“1234”是他们唯一的学生编号吗。你可以更进一步:STU_111_222_333_444444,其中111是类,222是部分,333是作业,444444是他们唯一的学生id。这样就不需要做任何花哨的事情。简单的解决方案是让他们唯一地命名数据库。实际上,从一开始就开发他们的代码来使用这个唯一的名称。难道你不能要求学生把他们的数据库命名为STU_1234,其中“1234”是他们唯一的学生编号吗。你可以更进一步:STU_111_222_333_444444,其中111是班级,222是部门,333是作业,444444是他们唯一的学生id。这样就不需要做任何花哨的事情。我们做了类似的事情,客户登录网站并输入设置信息。然后,网站创建一个通用数据库的副本,并将设置信息加载到数据库中,创建备份并将备份文件发送给客户。听起来您的主要问题是所有数据库的名称都相同。我的建议是使用以下步骤进行评分:
USE Master
CREATE DATABASE [PROJECTID_STUDENTID_TIMESTAMP]
--Unique database is now created and stored in default SQL data/log file location
RESTORE DATABASE [PROJECTID_STUDENTID_TIMESTAMP] FROM DISK = 'c:\pathtofile\filename.bak' WITH REPLACE
--Student database is now available for grading
USE [PROJECTID_STUDENTID_TIMESTAMP]
--Add grading scripts here
我们做了一些类似的事情,客户登录到一个网站并输入设置信息。然后,网站创建一个通用数据库的副本,并将设置信息加载到数据库中,创建备份并将备份文件发送给客户。听起来您的主要问题是所有数据库的名称都相同。我的建议是使用以下步骤进行评分:
USE Master
CREATE DATABASE [PROJECTID_STUDENTID_TIMESTAMP]
--Unique database is now created and stored in default SQL data/log file location
RESTORE DATABASE [PROJECTID_STUDENTID_TIMESTAMP] FROM DISK = 'c:\pathtofile\filename.bak' WITH REPLACE
--Student database is now available for grading
USE [PROJECTID_STUDENTID_TIMESTAMP]
--Add grading scripts here
我假设学生分离数据库,然后您连接到服务器。此时,您可以选择唯一的数据库名称 或者,您可以恢复备份并选择数据库的名称,以便它们始终是唯一的
此外,假设学生的工作完全在数据库中进行,那么在测试他们的代码时,数据库的名称实际上与您和他们无关——除了用于从任何客户端代码进行外部访问的连接字符串。我假设学生分离数据库,然后您连接到服务器。此时,您可以选择唯一的数据库名称 或者,您可以恢复备份并选择数据库的名称,以便它们始终是唯一的
此外,假设学生的工作完全在数据库中进行,那么在测试他们的代码时,数据库的名称实际上与您和他们无关-除了用于从任何客户端代码进行外部访问的连接字符串。我们可以,但是我们需要它,这样学生们就可以在线下载包含规范的项目包