onze sponsors
Ik heb een programma gemaakt dat een stored procedure gebruikt om twee databases met elkaar te vergelijken. Dus elke afwijking in de tabellen, indexen, constraints, functions enz. worden op een scherm getoond. Het vervelende was altijd dat de twee databases op dezelfde server moeten staan om te vergelijken. Dus als ik lokaal een database heb, en er staat er een op de testserver, dan moet ik eerst bekkuppen en restoren naar de andere server om met mijn programma te kunnen vergelijken.
"Dat kan anders!", dacht ik en ging aan de slag. SPs, functions en views waren geen probleem, maar toen constraints! Ik ben nu volledig gestruikeld op OBJECTPROPERTY. Je moet daar een id aan meegeven, maar de sp van het programma draait in master en met server.database.schema.object vraag ik dan de gegevens op, maar met OBJECTPROPERTY (en soortgelijken functions) kan dat niet (het id dat je doorgeeft, bestaat niet in master of is anders). Voor andere soortgelijke problemen heb ik een oplossing gevonden, maar om van een contraint te bepalen of hij enabled is, of het een cascading delete betreft en of de PK index clustered on non clustered is. Voor de laatste twee kan ik wel een extra join doen op sysindexes en information_schema.referentialconstraints, maar daar ben ik ook niet echt blij mee. Of een constraint enabled is of niet, kan ik helemaal in geen enkele systeemview vinden.
Geprobeerd of ik executesql naar een remote server kan gebruiken in een functie: lukt niet. Rechtstreeks deze sp opnemen in mijn selectstatement gaat so wie so niet. Hoe kan ik deze opties (en ongetwijfeld anderen die komen als ik hetzelfde moet doen met indexen en tabellen) opvragen op een remote server?