Dynamics CRM Publishing Customizations - Multi Developers - sql-server

In my company we are 5 developers who work on same organisation.
We used a single server with SQL and Dynamics CRM installed.
If two developers publish customizations at the same time, we need to restart IIS.
Do you have any suggestions to optimize SQL Server or IIS to avoid this issue?

Currently in the way CRM works, publishing will slow everything down and potentially lock the SQL server up.
Your options would to be to only publish when necessary, so you minimize your disruption to your developers. For stuff like form design, I would recommend not publishing, but, to preview the from to see your new changes.
Upgrading your servers with more memory and so on will help reduce the time taken to publish. Sorry this is not much help.

If you are developing webresources, you can use this little hack webresource proxy as workaround. Basically, it just replaces the content of the webresource by the response of generic web server. You don't need to update and publish webresource anymore.

Related

Building Deployment Azure With Database Migration Scripts

We are very new to Azure, we have a large existing website (multiple instances with different customers) with an associated windows service and SQL Server 2008 database.
We are in the process of migrating the website in development to Azure. We are creating an Azure worker role to wrap the code that the Windows service executes to run every hour but my main concern is deployment, in an ideal world we will automate the deployment but for now we want to get to the following point where we can build a single deployment package for a customer which runs the database migration scripts to the Azure SQL database and migrates the web role and site and during this time a holding page is displayed to let users know the site is currently being updated. Also it would be great if there was a way to rollback if something goes wrong.
Despite my research I cannot find the answer to the process above, everything seems to involve deploying the database changes (this will include custom scripts for data migration/changes) and then publishing the site to Azure from visual studio but as we want to deploy this multiple times it would be ideal to build a package that we run against each customer site/database when we/they are ready to migrate to the next version as this may not always happen at the same time.
Our current deployment strategy is a mess, we stop the application in IIS and then start another one which shows a holding page saying the site is being updated. We then stop the windows service and manually copy the latest version overwriting the existing website and windows service. We then run a SQL script which has any changes in on the database and then we restart the windows service and IIS application.
This is not sustainable but in my research I have not come across the best option moving forward. I have looked at MSBuild but it is completely new to me and finding somewhere to start with such unfamiliar technology is proving hard. I also looked at FluentMigrator and considered running our database changes from application_start but I am not sure I am comfortable with that.
As we are looking to move to Azure where we will have the site running with 5 different configurations at the moment we are looking at publishing profiles and the hosted build controller but I cannot figure out how to deploy the database with these changes.
I would appreciate some insight into how others handle deployments like this taking into account that we are using all the latest tech, VS2013, VSO, Azure, etc. and also that we need to be able to change the configurations for different customers and I am assuming publishing profiles is the best way to do that but I may be wrong.

Django with a SQL Server database

I am looking into developing a new user registration system for my company. In the past we have made use of ASP.net for all web development.
Due to the huge charge associated with this I am looking at moving towards a more open source alternative. The issue at the moment is that the db we have is SQL Server and we have no way of changing this in the forth coming future.
Has anyone any experience of building a django application with SQL Server backend for the database?
I would most like to hear of any issues you may have faced.
Thanks
Looks like there's some decent resources out there:
http://code.google.com/p/django-mssql/
http://code.google.com/p/django-pyodbc/
https://code.djangoproject.com/wiki/DjangoOnWindowsWithIISAndSQLServer
I personally don't have experience with it, and the backporting of your models from db->code could possibly be a painful step. Also, it seems like most of these packages want to work with sqlserver 2000 or 2005, so hopefully you are not using 2008.

How do you keep seperate dev environments which need to be kept in sync, in sync?

I am setting up two dev environments (one will be on my local server, another on a cloud service provider where I will do work which may require more memory than on my local server).
What can I do to ensure that both environments are always fully in sync? I am looking at deploying apps centrally and using a tool to sync SQL Server databases, and another tool for keeping Sharepoint servers in sync, between two VMs on the two environments which are like-for-like. Is there anything else which would help to achieve this?
Thanks
This is a very tricky problem for SharePoint development.
As far as SQL server goes (for non-SharePoint stuff), you can just sync your databases using the tools provided in SQL Server. The copy database wizard for example or you could even write your own SSIS package if you need custom work to be done.
SharePoint is a different matter though. You cannot just sync site collections / web applications from one server to another by just copying the databases across, it won't work (for many reasons, but mostly because when you create a web application on a server, it creates the databases using a GUID as the application ID. That GUID is used everywhere in the database and all the links between tables will be broken if you try and change it). The structure of the SharePoint database is not documented and MS recommends against modifying it manually. And honestly, even if you did manage to sync your databases right from SQL server, you would run into other problems because not all customizations you do are saved into the database (a lot of stuff goes into the 12 hive).
So it comes down to what you are trying to achieve.
If you are trying to sync customizations (i.e. your Content types, list templates, web parts, etc.) that were coded. I would recommend that you just build WSP packages from your development environment and that you deploy them everytime you need to sync.
If you are only trying to sync data (i.e. list items) you can use the backup / restore solution (you'll find it in Central Administration). Note that it isn't overly reliable if you have customizations though. It works fine on out of the box sites but it can be tricky to restore once you use your own list templates, etc.
You can also write code to sync using the web services or Content Deployment API and see if it suits your needs.
You can also look into tools that will do all or a part of the work for you. Here is one
So basically, no matter how you decide to do it, it won't be as simple as you expected it to be. The DEV / TEST / PROD environment sync problem is classic for SharePoint development.
I work on a highly customized SharePoint web app and the best solution we found was to :
Be very disciplined in our code : do all your customizations through code and build WSP packages with that code. No SharePoint designer. Once you customize a page with SharePoint designer you can't sync anything.
Sync the lists between any servers using the web services

Hosting an Access DB

So I'm inexperienced in hosting DB's and I've always had the luxury of someone else getting the db setup.
I was going to help a friend out with getting a webpage setup, I've got experience in Asp.Net MVC so I'm going with that. They want to setup a search page to query a db and display the results. My question I have is in getting the DB setup and hosted. They currently just have the Access DB on a local computer. There is basically only one table that would need to be queried for the search.
What is the best approach to getting this table/db accessible? They would like to keep the main copy of the db on the local machine, so copying the entire db over to the hosted site would be time consuming, could the lone table needed be solely copied to the host? Should I try to convince them to make changes on the hosted db and just make copies of that for their local machines? Any suggestions are welcome, Again I'm a total noob when it comes to hosting databases.
Thanks
Added: They are using a MS Access 2000, and the page will have access restrictions. Thanks for the responses.
How about SQL Server Express? I think you can do a remote connect from Access and just push the data over from Access.
I wouldn't use Access on a web server in any case.
I would strongly recommend against access from web work, its just not designed for it and given that SQL server express is free there is no reason not to give it a go.
You can migrate the data over by using the SQL server upsizing wizard, here is a link for help on using that feature
http://support.microsoft.com/kb/237980
It depends on what you mean by web work? Access 2010 can build scalable browser neutral web applications. They can scale to 1000's to users. In fact, you can even park the web sites on Microsoft's new cloud hosting options, and scale out to as many users as you need.
Here is a video of an application I wrote in access 2010. Note how at the half way I run the same application including the Access forms in a standard web browser. This application was built 100% inside of the Access client. The end result needs no ActiveX or Silverlight to run.
http://www.youtube.com/watch?v=AU4mH0jPntI
So, the above shows that access can now be used to build scale web sites (you can ignore the confusing answers by the other two posters here they are not quite up to speed on how access works or functions).
However, for your case, I would continue to have the access database on the desktop. You can simply link to tables that are hosted on the web server. Those tables can exist in MySql, or sql server. As long as the web site supports external ODBC connections (many do), then you can thus have the desktop application use the live data from the web server. If connections to the live data at all times is a issue, then you could certainly setup something to send up new records (or the whole table) on some kind of interval or perhaps the reverse, and pull down new records on a interval from the web site (depends which way you need to go). So, connecting to MySql or sql server is quite easy as long as the web hosting and site permits external ODBC connections. I do this all the time, and it works quite well.
As mentioned, new for access 2010 is web site building ability but that does requite Access Web services running on SharePoint.
You don't need to upgrade to Access 2010. One option is to use the EQL Data plugin to sync the database up to the server. Then you can write an asp.net, php, or whatever application that queries the table using the EQL API and prints the results however you want. This kb article describes how to use the EQL API from a web app.
The nice thing is that the database is still totally usable (and at full speed) even when you're not online, and then you can sync the new data up to the web occasionally. It only uploads the changes, not the entire database every time, so it's fast.
Disclaimer: I work at EQL Data so I'm a bit biased. But this kind of use case is the whole reason the company exists.

How will adding DataSources to DatdGrids in my development version of an ASP.NET web application affect deployment?

I've recently inherited a database driven e-commerce site written in C# ASP.Net, with an MS SQL database.
I have had little or no experience with this exact type of application up to this point, although I am comfortable exploring code, and am familiar with SQL query structure and C# (and web mark-up languages too).
So far I've been able to make all the adjustments I've wanted to to the application, have debugged some stuff, removed some compiler errors, added a few new simple functions, and am enjoying myself rather.
I am experiencing some problems with displaying the information from the database within Visual Web Developer 2008 Express Edition.
Having faced initial setup problems with the web.config file I'm a little wary about the next steps to take!
I currently have a local copy of web.config, which connects to a local copy of the database during development.
When I compile and upload any new versions of the application, I exclude the local version of web.config, so that the remote version uses it's own web.config file to connect to the remote database.
In order to see any of the database information on the web pages during development , I have to run the website in the browser.
Should I be able to see this info in Design View in VS by creating a connection to the database in the database explorer? Will this affect the application when it is running remotely on the webserver? (as the connection would have been made to the local database and not the remote one, and hence the connection string would be different)
All of the DataGrids are blank in VS design view. If I choose a Data Source for them using the Smart Tags in design view, will they use the right Data Source when running remotely? Should I drop the local copy of the database altogether? Connecting to the remote database during development seems rather dangerous to me!
I hope this is clear, any and all help/links/pointers welcome!
Using different Web.config in development and production environment to learn how you can use different configs
Also check Scott's tip, http://weblogs.asp.net/scottgu/archive/2007/09/21/tip-trick-automating-dev-qa-staging-and-production-web-config-settings-with-vs-2005.aspx (Not sure if it applies to Visual Web Developer)

Resources