SQL Server Profiler和参数化语句
问:自从升级到SQL Server 2000后,我在SQL事件查看器中遇到了一个问题:我无法捕获带有参数的Transact-SQL语句。我希望获得查询执行过程中参数的实际取值,而并非诸如@p1这样的参数形式。请问如何在不引用跟踪过程中其它行的情况下对参数取值加以置换。
答:您必须获取跟踪过程的其它部分(如存储过程StmtCompleted所返回的结果),并将这些部分收集在一起(语句放在最前面)以捕获完整的查询内容。之所以会出现这样的结果,其原因在于从SQL Server关系型引擎恢复数据的SQL事件查看器方法。这样的问题在SQL Server 7.0中同样存在。然而,由于当事件产生时,位于引擎内部的参数取值是未知的,因此,我们无法在这一时刻做出修改。
将一个SQL Server系统用作一台PDC
问:我的公司建立了一个灾难恢复站点,并且计划在一台新配备的计算机上安装SQL Server。Microsoft Windows NT管理员希望使用运行SQL Server的计算机作为主域控制器(PDC)。我听说,由于PDC需要完整维护与复制网络帐号数据库所引发的资源密集型任务并且需要执行网络登陆验证操作,因此,这种配置方案并非一种良好的方式。那么,请问运行SQL Server的计算机能够转而充当备份域控制器(BDC)呢?从技术上讲,将SQL Server配置为PDC或BDC是否可能呢?
答:当您在PDC或BDC上安装SQL Server时,它仍可保持良好的工作状态。如需确定某种配置方案能否适应于您的站点,应当考虑您所拥有的资源。如果您拥有足够的网络带宽、内存空间与空闲处理器,那么,使用运行SQL Server的计算机作为域控制器便是一种合理的方案。然而,在这种情况下,根据域的实际规模,相应的计算机可能需要承担大量工作负载。如果您认为SQL Server的任务将会非常繁重,那么,便请不要再让其运行任何其它服务。
管理技巧
问:我尝试将数据库备份到网络共享资源上的一个文件中,并将其恢复到另一台服务器上。我试图通过下列语句借助net use命令在目标服务器上创建共享资源:
NET USE * \\\\PS5\\C /USER:ONEDEV\\domain id
password /PERSISTENT:NO
然而,系统却始终返回消息“无法获得尚未分配的可用驱动器盘符”。此时,SQL Server企业管理器明明显示出许多可用驱动器。请问我应如何解决这一问题?
答:您只需直接使用统一命名约定(UNC)路径来备份您的数据库。SQL Server并非按照与用户相同的方式来看待映射驱动器盘符。您需要在您的共享资源\\\\PS5\\C上为SQL Server服务帐号授予完整的
访问权限,创建一个新的共享资源,或使SQL Server服务帐号成为名为PS5的计算机上的管理员组成员。
将事
务日志移动到不同的驱动器
问:如何将数据库事务日志移动到不同的驱动器上?
答:您可以通过用于分离与附加数据库的SQL Server存储过程来移动事务日志。您需要对数据库进行分离,移动日志文件,然后再将其重新附加到数据库上。举例来说,如果要将pubs数据库从C驱动器移动到D驱动器,应首先使用以下格式的sp_detach_db命令分离数据库:
EXEC sp_detach_db \'pubs\'
接下来,将pubs.mdf与pubs_log.ldf文件拷贝到目标驱动器上。以下示例显示了如何将这两个文件拷贝到d:\\mssql7\\data目录下:
copy c:\\mssql7\\data\\pubs.mdf d:\\mssql7\\datacopy c:\\mssql7\\data\\pubs_log.ldf d:\\mssql7\\data
sql server 2000是一种最后,当您完成文件拷贝操作后,便可使用sp_ attach_db存储过程将数据重新附件到SQL Server上:
EXEC sp_attach_db \'pubs\', \'d:\\mssql7\\data\\pubs.mdf\', \'d:\\mssql7\\data\\pubs_log.ldf\'
2.
面试题:请问在SQL2000中怎么区分登入,用户,角,并用例子举例说明;
再问:
(1)登入ID是不是就是用户名(当我创建了一个登入, 我在点击登入所对应的数据,实例中的用户一栏看到登入ID与用户名一致)
(2)一个登入ID是不是只能对应一个用户
教科书答案:登录 ID 仅能使您连接到 SQL Server 实例。特定数据库内的权限由用户帐户控制。数据库管理员将您的登录帐户映射到您有权访问的任何数据库中的用户帐户
用户如:sa
角如ublic/db_owner/db_datareader/db_datawriter等
只有给用户赋予角,该用户才有相应的操作数据库的权限
如将public/db_owner角赋给sa,则该用户有对数据库进行一切操作的权限
角:完成特定的、与服务器相关的管理任务所需的权限,一个用户可以属于多个角。
登录:仅能使您连接到 SQL Server 实例。
命题官的理解:
登录是sql实例级的
用户是数据库级的
角有实例级和数据库级两种
登录决定你是否能访问sql实例
用户与登录对应, 确实某个登录后, 它对那些数据库有那些权限.
角是为了方便管理一类登录或者用户所具有的权限, 当某一类登录或者用户具有相同的权限时, 可以简单地给予他们对应的角即可.
做个形象的比喻:
sql实例就相当于一个公司.
如果你要在公司工作自然就要成为公司的员工, 因此公司的员工就相当于登录
公司有不同的部门, 这相当于数据库, 你要在某个部门做事, 必须把你分配到某个部门, 也就是在部门的名单中要有你, 这个部门的名单就相当于用户. 名单必须对应公司的某个员工.
但你一个人是可以在多个部门工作的
因此,
一个登录可以对应多个数据库的不同用户.
同样, 一个员工在一个部门的名单中只可能出现一次
因此, 一个登录在同一数据库中, 只可能对应一个用户
为了方便定义每个员工应该做些什么, 应该承担什么职责, 公司会定义职位, 我个职位对应的, 在数据库中就叫角.
因为有的职位是公司层面的, 比如懂事长, 他什么都可以管
因此, 有sql实例级的角
也可以具体地为每个部位定义职位, 不同部门的同一名称的职位它的具体内容可以不同.
因此,对应于sql而言, 它又有数据库级的角
某个员工是某个职位, 则具有该职位对应的权限与责任
因此, 对于sql而言, 某个登录或者用户被授予某个或者某些角, 它就具有对应的权限.
不同职位, 在不同时期, 可以由不人担任, 换人只需要取消和授予对应人员的职位就可以了. 不用改职位定义.
因此, 对于sql而言, 可以根据需要取消和授予某个登录或者用户的角.
(这是管理方便性需要, 你完全可以不理会角, 自己为用户或者登录指定权限)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论