Edition specific SSAS development using BIDS
It can often happen, that the development environment uses a more feature rich version of SQL Server than the production environment. The main issue that arises from this kind of setup is that development team might use features that might not be available in the target environment. For example, an organization might use SQL Server Enterprise Edition in most cases and therefore the development team uses the Developer edition features of SQL Server for the development phase. But consider the case, that the solution is expected to then be deployed on Standard edition. In this case, the development team needs to identify and remove these features that are used. In this tip we will look at how to deal with this issue in BIDS for SSAS development.
If features that are only available in higher editions of SQL Server are used in a project and then the same is attempted to be deployed in a lower edition environment, obviously the solution will break. As a solution, a feature boundary needs to be implemented, so the development team uses only those features that are available in the target edition of SQL Server. As we are discussing this example in the context of SSAS development, our focus is to implement the same in BIDS for a SSAS project.
To test the problem and solution in question, follow the below steps.
1) Firstly, open the sample Adventure Works SSAS project, of Enterprise version. If you have installed SQL Server in the default location, you should find the project in the following location: "C:\Program Files\Microsoft SQL Server\100\Tools\Samples\Adventure Works 2008R2 Analysis Services Project\enterprise". In case you don't find it, you can download it from codeplex.com.
2) I have this project installed and deployed on my machine and I have SQL Server Enterprise Edition installed. When I open this project, it looks like the below screenshot.
3) Say our target edition on which we are expected to deploy this SSAS solution is a Standard edition. This means that our target environment has limited features, than the environment we are using for development. Right-click the solution and select properties, and you should find the dialog as shown in the screenshot below. The property that would help us to implement a feature boundary in our development environment is "Deployment Server Edition". By default, the value for this property on my machine is "Developer". Developer edition contain all of the features of the Enterprise edition, except that it cannot be used in production. For a detailed feature comparison of different editions of SQL Server, check out this URL.
4) As our target environment uses Standard edition, change the value of the "Deployment Server Edition" property to "Standard" as shown in the below screenshot.
5) The effect of the above change is that if you use features that are outside the boundary of the server edition, the build process will fail with errors. This errors provide a hint that you are using features that are not available in your target environment. The project which we have opened is an Enterprise specific version, as it has used features that are part of the Enterprise edition. Try to build this project and you should find lots of errors, like the ones shown in the below screenshot. This would clearly provide a hint of what features you can and cannot use.
In this way, one can easily implement a feature boundary with this property, and by assigning appropriate values to this property, one can facilitate development for different target editions using the same edition of the development environment. Change the value of this property to "Developer" again and try building the project. The build should be successful this time.
- Open your cube and check out the warning or errors on the different tabs, when you change the property value to "Standard".
- Try all the available values for this property and check out the effect of each by trying to build the project.
About the author
View all my tips