I did this with SIF. Using the xConnect json template. I was able to remove all the tasks that build xConnect and just rebuild the shards.
- You first need to delete the two shard databases and the shard manager database.
- You need the Sitecore 9.0.1 rev. 171219 (OnPrem)_xp0xconnect.scwdp.zip file in the C:\sitecoreInstall\9.0.1 rev. 171219\ folder. OR what ever version you are using.
- Then copy the
xconnect-xp0-clean-shards.json
into the C:\sitecoreInstall\9.0.1 rev. 171219\Configs\ folder
- Change the SQL login detail and site $prefix.
- Then run CleanShards.ps1. It will re-add the shard databases to your SQL server.
NOTE: If you are doing this on Azure SQL, just change this line in the JSON file.
"Sharding.DacPac.Path": "[joinpath(variable('Sharding.Root.Path'), 'Sitecore.Xdb.Collection.Database.Sql.dacpac')]",
to
"Sharding.DacPac.Path": "[joinpath(variable('Sharding.Root.Path'), 'Sitecore.Xdb.Collection.Database.Sql.Azure.dacpac')]",
CleanShards.ps1
Import-Module SitecoreInstallFramework
$prefix = "xp0"
$PSScriptRoot = "C:\sitecoreInstall\9.0.1 rev. 171219\Configs"
$XConnectCollectionService = "xp0.xconnect.local"
$sitecoreSiteName = "xp0.sc9.local"
$SolrUrl = "https://solr:8983/solr"
$SolrRoot = "C:\solr\solr-6.6.2"
$SolrService = "solr-6.6.2"
$SqlServer = "localhost\SQL2016"
$SqlAdminUser = "dev"
$SqlAdminPassword="dev123"
$certParams = @{
Path = "$PSScriptRoot\xconnect-createcert.json"
CertificateName = "$prefix.xconnect_client"
}
$xconnectParams = @{
Path = "$PSScriptRoot\xconnect-xp0-clean-shards.json"
Package = "C:\sitecoreInstall\9.0.1 rev. 171219\Sitecore 9.0.1 rev. 171219 (OnPrem)_xp0xconnect.scwdp.zip"
LicenseFile = "C:\sitecoreInstall\license.xml"
Sitename = $XConnectCollectionService
XConnectCert = $certParams.CertificateName
SqlDbPrefix = $prefix
SqlServer = $SqlServer
SqlAdminUser = $SqlAdminUser
SqlAdminPassword = $SqlAdminPassword
SolrCorePrefix = $prefix
SolrURL = $SolrUrl
}
Install-SitecoreConfiguration @xconnectParams -Verbose
xconnect-xp0-clean-shards.json
// -------------------------------------------------------------------------- //
// Sitecore Install Framework - XConnect XP0 Configuration //
// //
// Run this configuration to install a single instance of XConnect. //
// //
// NOTE: Only single line comments are accepted in configurations. //
// -------------------------------------------------------------------------- //
{
"Parameters": {
// Parameters are values that may be passed when Install-SitecoreConfiguration is called.
// Parameters must declare a Type and may declare a DefaultValue and Description.
// Parameters with no DefaultValue are required when Install-SitecoreConfiguration is called.
"Package": {
"Type": "string",
"Description": "The path to the Web Deploy package to deploy."
},
"LicenseFile": {
"Type": "string",
"Description": "The path to the Sitecore license file."
},
"SiteName": {
"Type": "string",
"DefaultValue": "XConnect",
"Description": "The name of the site to be deployed."
},
"XConnectCert": {
"Type": "string",
"Description": "The certificate to use for encryption. Provide the name or the thumbprint."
},
"SqlDbPrefix": {
"Type": "string",
"Description": "The prefix used for all Sql databases."
},
"SolrCorePrefix": {
"Type": "string",
"Description": "The prefix used for all Solr cores."
},
"SSLCert": {
"Type": "string",
"Description": "The certificate to use for HTTPS web bindings. Provide the name or the thumbprint. If not provided a certificate will be generated.",
"DefaultValue": ""
},
"SqlAdminUser": {
"Type": "string",
"DefaultValue": "sa",
"Description": "The Sql admin user account to use when installing databases."
},
"SqlAdminPassword": {
"Type": "string",
"DefaultValue": "12345",
"Description": "The Sql admin password to use when installing databases."
},
"SolrUrl": {
"Type": "string",
"DefaultValue": "https://localhost:8983/solr",
"Description": "The Solr instance to use."
},
"SqlCollectionUser": {
"Type": "string",
"DefaultValue": "collectionuser",
"Description": "The Sql admin user account to use when installing databases."
},
"SqlCollectionPassword": {
"Type": "string",
"DefaultValue": "Test12345",
"Description": "The Sql admin password to use when installing databases."
},
"SqlProcessingPoolsUser": {
"Type": "string",
"DefaultValue": "poolsuser",
"Description": "The Sql user for the Processing Pools connection string in Sitecore."
},
"SqlProcessingPoolsPassword": {
"Type": "string",
"DefaultValue": "Test12345",
"Description": "The Sql password for the Processing Pools connection string in Sitecore."
},
"SqlReferenceDataUser": {
"Type": "string",
"DefaultValue": "referencedatauser",
"Description": "The Sql user for the Reference Data connection string in Sitecore."
},
"SqlReferenceDataPassword": {
"Type": "string",
"DefaultValue": "Test12345",
"Description": "The Sql password for the Reference Data connection string in Sitecore."
},
"SqlMarketingAutomationUser": {
"Type": "string",
"DefaultValue": "marketingautomationuser",
"Description": "The Sql user for the Marketing Automation connection string in Sitecore."
},
"SqlMarketingAutomationPassword": {
"Type": "string",
"DefaultValue": "Test12345",
"Description": "The Sql password for the Marketing Automation connection string in Sitecore."
},
"SqlMessagingUser": {
"Type": "string",
"DefaultValue": "messaginguser",
"Description": "The Sql user for the Messaging connection string in Sitecore."
},
"SqlMessagingPassword": {
"Type": "string",
"DefaultValue": "Test12345",
"Description": "The Sql password for the Messaging connection string in Sitecore."
},
"SqlServer": {
"Type": "string",
"DefaultValue": ".\\SQLSERVER",
"Description": "The Sql Server where databases will be installed."
},
"XConnectEnvironment": {
"Type": "string",
"DefaultValue": "Development",
"Description": "The configuration environment for this instance."
},
"XConnectLogLevel": {
"Type": "string",
"DefaultValue": "Information",
"Description": "The level of log information to output."
}
},
"Variables": {
// Variables are values calculated in a configuration.
// They can reference Parameters, other Variables, and config functions.
// The prefix for shards created by the tool
"Sharding.Database.Prefix": "[concat(parameter('SqlDbPrefix'), '_Xdb.Collection.Shard')]",
// The database names.
"Sql.Database.ShardMapManager": "[concat(variable('Sharding.Database.Prefix'), 'MapManager')]",
"Sql.Database.Shard0": "[concat(variable('Sharding.Database.Prefix'), '0')]",
"Sql.Database.Shard1": "[concat(variable('Sharding.Database.Prefix'), '1')]",
"Sql.Database.Pools": "[concat(parameter('SqlDbPrefix'), '_Processing.Pools')]",
"Sql.Database.MarketingAutomation": "[concat(parameter('SqlDbPrefix'), '_MarketingAutomation')]",
"Sql.Database.Messaging": "[concat(parameter('SqlDbPrefix'), '_Messaging')]",
"Sql.Database.Reference": "[concat(parameter('SqlDbPrefix'), '_ReferenceData')]",
// The security certificate details
"Security.CertificateStore": "Cert:\\Localmachine\\My",
"Security.SSL.CertificateThumbprint": "[GetCertificateThumbprint(parameter('SSLCert'), variable('Security.CertificateStore'))]",
"Security.XConnect.CertificateThumbprint": "[GetCertificateThumbprint(parameter('XConnectCert'), variable('Security.CertificateStore'))]",
"Security.XConnect.CertificatePath": "[joinpath(variable('Security.CertificateStore'), variable('Security.XConnect.CertificateThumbprint'))]",
// The sites full path on disk
"Site.PhysicalPath": "[joinpath(environment('SystemDrive'), 'inetpub', 'wwwroot', parameter('SiteName'))]",
"Site.DataFolder": "[joinpath(variable('Site.PhysicalPath'), 'App_Data')]",
// The path to the index worker windows service
"Services.IndexWorker.InstallPath": "[joinpath(variable('Site.DataFolder'), 'jobs','continuous','IndexWorker')]",
"Services.IndexWorker.Name": "[concat(parameter('SiteName'), '-IndexWorker')]",
// The path to the automation engine windows service
"Services.MarketingAutomationEngine.InstallPath": "[joinpath(variable('Site.DataFolder'), 'jobs','continuous','AutomationEngine')]",
"Services.MarketingAutomationEngine.Name": "[concat(parameter('SiteName'), '-MarketingAutomationService')]",
// The marketing automation endpoint.
"Endpoint.MarketingAutomation": "[concat('https://', parameter('SiteName'))]",
// The reference data endpoint.
"Endpoint.ReferenceData": "[concat(variable('Endpoint.MarketingAutomation'), '/refdata')]",
// The sharding tool details.
"Sharding.Root.Path": "[joinpath(variable('Site.DataFolder'), 'collectiondeployment')]",
"Sharding.Tool.Path": "[joinpath(variable('Sharding.Root.Path'), 'Sitecore.Xdb.Collection.Database.SqlShardingDeploymentTool.exe')]",
"Sharding.DacPac.Path": "[joinpath(variable('Sharding.Root.Path'), 'Sitecore.Xdb.Collection.Database.Sql.dacpac')]",
"Sharding.Map.Names": [
"ContactIdShardMap",
"DeviceProfileIdShardMap",
"ContactIdentifiersIndexShardMap"
],
"Sharding.DB.Connection": "[sqlconnectionstring(parameter('SqlServer'), '', parameter('SqlAdminUser'), parameter('SqlAdminPassword'))]",
"Sharding.Edition": "Basic",
"Sharding.SqlCmd.Path.CreateShardApplicationDatabaseServerLogin": "[joinpath(variable('Sharding.Root.Path'), 'CreateShardApplicationDatabaseServerLogin.sql')]",
"Sharding.SqlCmd.Path.CreateShardManagerApplicationDatabaseUser": "[joinpath(variable('Sharding.Root.Path'), 'CreateShardManagerApplicationDatabaseUser.sql')]",
"Sharding.SqlCmd.Path.CreateShardApplicationDatabaseUser": "[joinpath(variable('Sharding.Root.Path'), 'CreateShardApplicationDatabaseUser.sql')]",
// The solr configuration details.
"Xdb.Name": "[concat(parameter('SolrCorePrefix'), '_xdb')]",
"Xdb.Rebuild.Name": "[concat(variable('Xdb.Name'), '_rebuild')]",
"Solr.Url.Xdb": "[concat(parameter('SolrUrl'), '/', variable('Xdb.Name'))]",
// The content at this path is installed by the wdp
"Solr.Config.Path": "[joinpath(variable('Site.DataFolder'), 'solrcommands', 'schema.json')]"
},
"Tasks": {
// Tasks are separate units of work in a configuration.
// Each task is an action that will be completed when Install-SitecoreConfiguration is called.
// By default, tasks are applied in the order they are declared.
// Tasks may reference Parameters, Variables, and config functions.
"CleanShards": {
// Drop existing shards.
"Type": "Command",
"Params": {
"Path": "[variable('Sharding.Tool.Path')]",
"Arguments": [
"/operation", "drop",
"/connectionstring", "[variable('Sharding.DB.Connection')]",
"/dbedition", "[variable('Sharding.Edition')]",
"/shardMapManagerDatabaseName", "[variable('Sql.Database.ShardMapManager')]",
"/shardMapNames", "[join(variable('Sharding.Map.Names'))]"
],
"TaskName": "ShardingTool - Clean"
}
},
"CreateShards": {
// Create new shards.
"Type": "Command",
"Params": {
"Path": "[variable('Sharding.Tool.Path')]",
"Arguments": [
"/operation", "create",
"/connectionstring", "[variable('Sharding.DB.Connection')]",
"/dbedition", "[variable('Sharding.Edition')]",
"/shardMapManagerDatabaseName", "[variable('Sql.Database.ShardMapManager')]",
"/shardMapNames", "[join(variable('Sharding.Map.Names'))]",
"/shardnumber", 2,
"/shardnameprefix", "[variable('Sharding.Database.Prefix')]",
"/shardnamesuffix", "\"\"",
"/dacpac", "[variable('Sharding.DacPac.Path')]"
],
"TaskName": "ShardingTool - Create"
}
},
"CreateShardApplicationDatabaseServerLoginSqlCmd": {
// Create Collection Shard Database Server Login
"Type": "Command",
"Params": {
"Path": "sqlcmd",
"Arguments": [
"-i",
"[variable('Sharding.SqlCmd.Path.CreateShardApplicationDatabaseServerLogin')]",
"-S",
"[parameter('SqlServer')]",
"-U",
"[parameter('SqlAdminUser')]",
"-P",
"[parameter('SqlAdminPassword')]",
"-v",
"[concat('UserName=',parameter('SqlCollectionUser'))]",
"-v",
"[concat('Password=',parameter('SqlCollectionPassword'))]"
]
}
},
"CreateShardManagerApplicationDatabaseUserSqlCmd": {
// Create Collection Shard Manager Database User
"Type": "Command",
"Params": {
"Path": "sqlcmd",
"Arguments": [
"-i",
"[variable('Sharding.SqlCmd.Path.CreateShardManagerApplicationDatabaseUser')]",
"-S",
"[parameter('SqlServer')]",
"-U",
"[parameter('SqlAdminUser')]",
"-P",
"[parameter('SqlAdminPassword')]",
"-v",
"[concat('UserName=',parameter('SqlCollectionUser'))]",
"-v",
"[concat('ShardMapManagerDatabaseName=',variable('Sql.Database.ShardMapManager'))]"
]
}
},
"CreateShard0ApplicationDatabaseUserSqlCmd": {
// Create Collection Shard 0 Database User
"Type": "Command",
"Params": {
"Path": "sqlcmd",
"Arguments": [
"-i",
"[variable('Sharding.SqlCmd.Path.CreateShardApplicationDatabaseUser')]",
"-S",
"[parameter('SqlServer')]",
"-U",
"[parameter('SqlAdminUser')]",
"-P",
"[parameter('SqlAdminPassword')]",
"-v",
"[concat('UserName=',parameter('SqlCollectionUser'))]",
"-v",
"[concat('ShardDatabaseName=',variable('Sql.Database.Shard0'))]"
]
}
},
"CreateShard1ApplicationDatabaseUserSqlCmd": {
// Create Collection Shard 1 Database User
"Type": "Command",
"Params": {
"Path": "sqlcmd",
"Arguments": [
"-i",
"[variable('Sharding.SqlCmd.Path.CreateShardApplicationDatabaseUser')]",
"-S",
"[parameter('SqlServer')]",
"-U",
"[parameter('SqlAdminUser')]",
"-P",
"[parameter('SqlAdminPassword')]",
"-v",
"[concat('UserName=',parameter('SqlCollectionUser'))]",
"-v",
"[concat('ShardDatabaseName=',variable('Sql.Database.Shard1'))]"
]
}
}
}
}