sql-sql server创建数据库问题!在score表上创建触发器,用于登记修改成绩列数据者及修改时间等信息.越快越好!

我需要创建一个SQL sql server创建数据库数据庫它将通过另一个数据库的某些复制机制接收更新。我需要编写插入更新和删除触发器,这些触发器将在此重新发生时执行 我有触發器的经验但没有复制经验。 我应该使用Transactional还是Merge复制还是重要? 设计为在执行简单的SQL插入语句时运行的触发器是否也会在复制时运行     

这嘚看情况。 如果要应用的更新是隔离表即给定表的所有数据仅来自发布者,则可以使用事务复制 另一方面,如果您希望将表内容(即訂单表)与订单放在两个站点上进行组合那么您可能希望查看使用合并复制。 关于触发器您可以应用“非复制”配置来控制其行为。請参阅以下文章以供参考 事务和合并复制是非常不同的,但两个选项的触发器行为类似     

会员:怪酞撩匹 时间:

除了触发器之外,还有一些替代选项可供您使用 您可以修改订户(目标)数据库上的复制过程。 如果使用2008您可以在订阅者上使用“更改跟踪”来查找要“执行某些操作”的表,然后创建批处理以处理“基于集合”的数据而不是处理任意行。例如每个X运行一个SSIS包。     

}
的方法再选择"数据库关系图"节點提示 “此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建"选择“是”能打开, 但是里面没有视图!! 请问怎么解決,谢谢!!急求答案!!

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

我之前也遇到了这个问題,解决方法很简单右键选择数据库属性,然后在左侧菜单中选择文件然后将所有者更改为sa就OK了。

你对这个回答的评价是

是不是数據库里面的表之间没有关联

你对这个回答的评价是?

数据库再看看是不是少什么

你对这个回答的评价是

}

我们在sql sql server创建数据库2008中编写sql语言时经常会遇到这样的提示:***对象无效。这是什么错误为什么在2000版本中就不存在这样的情况呢?其实这主要是sql sql server创建数据库 版本中新增了架構的概念下面就结合网上的查询说一下我对sql sql server创建数据库2008中架构的理解。可能有一些东西理解的不到位欢迎各位指出,共同学习、改进

首先,我们来看一下微软对架构的官方定义:架构(Schema)是形成单个命名空间的实体的集合命名空间是一个集合,其中每个元素的名称都是唯┅的个人感觉这个定义有点晦涩,我理解的架构就是数据库中用来存放表(数据库对象)的命名空间数据库这个大的命名空间下可以包括多个架构(小的命名空间),每个架构下又可以包含多张表

架构实际上早在SQL sql server创建数据库 2000中就已经存在,不过在SQL sql server创建数据库 2000中数据库鼡户和架构是隐式连接在一起的,每个数据库用户都是与该用户同名的架构的所有者。当我们使用查询分析器去查询一个表的时候一个唍整的表的名称应该包括服务器名.数据库名.用户名.对象名,而在SQL sql server创建数据库 中一个表的完全限定名称应该为服务器名.数据库名.架构名.对象洺在SQL sql server创建数据库 2000中的完全限定名称中的“用户名”也是数据库中的用户,也是“架构名”假如有一个账户df在test数据库中创建了一张表tb1的時候,在查询分析器中应该输入的查询语句为select * from test.df.tb1也就是说,在SQL sql server创建数据库 2000中一张表所属的架构默认就是表的创建者的登录名称用户可以修改他所创建的所有数据库对象。但在2008中已经将用户和其创建对象所属关联取消了而加入了一个全新的架构体系。

那微软为何要在05之后嘚版本中引入架构并将用户与架构分开呢?将架构与数据库用户分离对管理员和开发人员而言有什么好处呢

1.架构管理与用户管理分开。多个用户可以通过角色(role)或组(Windows groups)成员关系拥有同一个架构在SQL sql server创建数据库 中,每个数据库角色都有一个属于自己的架构如果我们創建一个表,给它指定的架构名称为 db_ddladmin那么任何一个属于db_ddladmin中的用户都是可以去查询、修改和删除属于这个架构中的表,但是不属于这个组嘚用户是没有对这个架构中的表进行操作的权限有一点必须注意,db_dbdatareader组的成员可以查看所有数据库中的表db_dbdatawriter组成员可以修改所有数据库中 嘚表,db_owner组成员可以对数据库所有表进行所有操作这几个组的成员可以通过角色获取到在数据库中的特殊权限。

2.在创建数据库用户时可鉯指定该用户账号所属的默认架构。 ( 建议大家指定)

3. 删除数据库用户变得极为简单在 SQL sql server创建数据库 2000 中,用户(User)和架构是隐含关联的即每个用户拥有与其同名的架构。因此要删除一个用户必须先删除或修改这个用户所拥有的所有数据库对象,就比如 一个员工要离职要刪除他的账户的时候还得将他所创建的表和视图等都删除,影响过大SQL sql server创建数据库 将架构和对象者分离后就不在存在这样的问题,删除鼡户的时候不需要重命名该用户架构所包含的对象在删除创建架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序

4. 共享缺省架构使得开发人员可以为特定的应用程序创建特定的架构来存放对象,这比仅使用管理员架构(DBO schema)要好

5. 在架构和架构所包含的对象上设置权限(permissions)比以前的版本拥有更高的可管理性。

6. 区分不同业务处理需要的对象例如,我们可以把公共的表设置成pub的架构紦销售相关的设置为sales,这样管理和访问起来更容易大多数用户在创建对象的时候习惯直接输入对象名而将对象的架构名称省略,在 中會给用户创建的这样的表加上一个缺省的架构,用户如果没有对自己的默 认架构做设置那缺省架构就是dbo,也就是说如果一个db_ddladmin的成员在數据库中创建一个没有加上架构名称的表,这个表在数据库中的完整 名称应该是dbo.表名创建者在数据库中如果不是属于其它特殊组的成员,是不能对特殊组成员创建的表进行任何修改和查询的

7.若不指定默认架构,则为DBO为了向前兼容,早期版本中的对象迁移到新版本中早期版本中没有架构的概念的。所以就该对象的架构名就是dbo.在SQL sql server创建数据库 2008中DBO就是一个架构

8.当查找对象时,先找与用户默认架构相同的架構下的对象找不到再找DBO的对象

用户与架构分开,可以让数据库内各对象不再绑在某个用户账号上可以解决SQL sql server创建数据库 2000及以前版本中”鼡户离开公司“问题,也就是在拥有该对象的用户离开公司或离开该职务时,不必要大费周章地更改该用户所有的对象属于新的用户所囿另外,也可在安装某个套装软件时设置该套装软件所用的数据库对象都属于某个特定的架构,容易区别也就是说,在单一数据库內不同部门或目的的对象,可以通过架构区分不同的对象命名原则与权限

在SQLsql server创建数据库中,架构独立于创建它们的数据库用户而存在可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象明确指示对象的功能。例如除叻cus.app.entry.customEntry外,您还可以创建名为cus.app.manifest.customEntry的架构因为“manifest”不是用户,所以从数据库中删除用户后无需更改此名称。这就简化了数据库管理员和开发人員的工作

SQL sql server创建数据库 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称在 SQL sql server创建数据库 2000 中,首先检查的昰调用数据库用户所拥有的架构然后是 DBO 拥有的架构。在 SQL sql server创建数据库 中每个用户都有一个默认架构,用于指定服务器在解析对象的名称時将要搜索的第一个架构可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA则数据库用户将把 DBO 作为其默认架构。 下面举个具体的示唎来说明以一下架构的作用

--命令对架构进行操作
-- 创建两个用户时没有指定属于哪个架构
-- 这个表没指定属于哪个架构属于默认DBO 架构
--这个表僦属于sch架构
-- 赋予df这个用户查询sch架构中的对象的权限. 
-- 此时报告"对象名无效" 因为tb2此时为默认的DBO架构,而实际上tb2属于sch架构.
--带上架构名称就可以查询了
--不能查询,是因为没有权限
--给df用户赋默认架构
-- 此时不需要指定sch 也可以了,如果架构中还有其他对象,也可以查询
--创建第三张测试表同樣的是sch架构下
---但是无法进行数据插入,因为没有插入权限
---可以进行数据插入
 
-- 修改对象的架构tb2表的架构由sch 转移到sch1
--创建一个新用户同时指定默认schema,默认属于DBO 
--由于yhy不是当前用户,所以无法进行查询
-- 此时就可以进行查询了,如果架构中还有其他对象也可以查询
 
}

我要回帖

更多关于 sql server创建数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信