SQL_NoExpert Asked: 2019-03-01 08:19:56 +0800 CST2019-03-01 08:19:56 +0800 CST 2019-03-01 08:19:56 +0800 CST 只读 AlwaysOn 可用性组副本上的存储过程 772 我们有一个只读报告服务器,它是 AlwaysOn 可用性组的一部分。我们的开发人员想要创建一些存储过程。我的问题是应该在哪里创建存储过程 - 因为辅助是只读的,所以它会在主数据库上吗? sql-server sql-server-2014 2 个回答 Voted Danilo Braga 2019-03-01T08:36:14+08:002019-03-01T08:36:14+08:00 一种可能的解决方法是;只需在辅助实例中创建一个数据库,然后创建存储过程来访问正在复制的数据库中的数据。 编辑:但是这个数据库不会被复制。 Best Answer Tony Hinkle 2019-03-01T08:30:37+08:002019-03-01T08:30:37+08:00 存储过程包含在数据库中,因此如果要在其上创建存储过程的数据库位于可用性组中,您将在主数据库上创建它——不可能在辅助数据库上创建它,因为那里的副本是读取的——只要。 一旦在主副本上创建了存储过程,它就会成为数据库的一部分并在辅助副本上可用。 在对可用性组中的数据库进行任何修改时,同样的原则也适用。您不能在辅助上添加表、视图、存储过程、修改权限等,因为那里的数据库是只读的。
一种可能的解决方法是;只需在辅助实例中创建一个数据库,然后创建存储过程来访问正在复制的数据库中的数据。
编辑:但是这个数据库不会被复制。
存储过程包含在数据库中,因此如果要在其上创建存储过程的数据库位于可用性组中,您将在主数据库上创建它——不可能在辅助数据库上创建它,因为那里的副本是读取的——只要。
一旦在主副本上创建了存储过程,它就会成为数据库的一部分并在辅助副本上可用。
在对可用性组中的数据库进行任何修改时,同样的原则也适用。您不能在辅助上添加表、视图、存储过程、修改权限等,因为那里的数据库是只读的。