in R/R/sqlPackage.R [1840:1898]
sqlMakeTopLevel <- function(connectionString, packages, owner, scope, languageName)
{
changeTo = 1
haveUser <- (owner != '')
if (haveUser)
{
user = "?"
query = ""
}
else
{
user = "@currentUser"
query = "DECLARE @currentUser NVARCHAR(128);
SELECT @currentUser = CURRENT_USER;"
}
query = paste0(query, "EXEC sp_updateextendedproperty @name = N'IsTopPackage', @value=", changeTo,", @level0type=N'USER',
@level0name=", user, ", @level1type = N'external library', @level1name=?")
packageList <- enumerateTopPackages(connectionString, packages, owner, scope, languageName)$name
tryCatch(
{
hodbc <- connectToServer(connectionString)
for(pkg in intersect(packages,packageList))
{
if (haveUser)
{
queryResult <- dbSendQuery(hodbc, query, owner, pkg)
}
else
{
queryResult <- dbSendQuery(hodbc, query, pkg)
}
result <- dbFetch(queryResult)
}
},
error = function(err)
{
stop(sprintf("Attribution of packages %s failed with error %s",
paste(packages, collapse = ', '), err$message), call. = FALSE)
},
finally =
{
if(!is.null(queryResult))
{
dbClearResult(queryResult)
}
if (!is.null(hodbc))
{
dbDisconnect(hodbc)
}
})
return(TRUE)
}